)]}'
{"rally/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"7d6d8be2c1133929152f1127f08ed81524464545","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if \"type\" in config:"},{"line_number":78,"context_line":"            print_warning \u003d True"},{"line_number":79,"context_line":"            if config[\"type\"] !\u003d \"ExistingCloud\":"},{"line_number":80,"context_line":"                raise exceptions.RallyException("},{"line_number":81,"context_line":"                    \"You are using deployment type which doesn\u0027t exist. Please\""},{"line_number":82,"context_line":"                    \" check the latest documentation and fix deployment \""},{"line_number":83,"context_line":"                    \"config.\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_08b0a289","line":80,"updated":"2018-01-09 06:52:16.000000000","message":"can we just LOG.deprecated here, and trasnlate it to the new format. People is going to be very mad about this","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7ed96648ff9288c7f0d19146b7f1c5d94367580e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if \"type\" in config:"},{"line_number":78,"context_line":"            print_warning \u003d True"},{"line_number":79,"context_line":"            if config[\"type\"] !\u003d \"ExistingCloud\":"},{"line_number":80,"context_line":"                raise exceptions.RallyException("},{"line_number":81,"context_line":"                    \"You are using deployment type which doesn\u0027t exist. Please\""},{"line_number":82,"context_line":"                    \" check the latest documentation and fix deployment \""},{"line_number":83,"context_line":"                    \"config.\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_a0598a35","line":80,"in_reply_to":"9f91af0f_08b0a289","updated":"2018-01-09 10:59:49.000000000","message":"Please, re-read L79. The error is raisen only in case of deployment type !\u003d \"ExistingCloud\". So it is only for those cases when someone wrote their own deployment engine.\nAs for old format, it is still supported and the proper transformation(see L85-86) is done with printing deprecation message (see L100)","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd27d4cb6c7f65b3b794224ebcd5ec6d604aae77","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        extras \u003d {}"},{"line_number":77,"context_line":"        if \"type\" in config:"},{"line_number":78,"context_line":"            if config[\"type\"] !\u003d \"ExistingCloud\":"},{"line_number":79,"context_line":"                raise exceptions.RallyException("},{"line_number":80,"context_line":"                    \"You are using deployment type which doesn\u0027t exist. Please\""},{"line_number":81,"context_line":"                    \" check the latest documentation and fix deployment \""},{"line_number":82,"context_line":"                    \"config.\")"}],"source_content_type":"text/x-python","patch_set":64,"id":"7f96bb07_4e8bedc1","line":79,"updated":"2018-01-18 06:27:06.000000000","message":"you need to add trollface at the end of the message. because there is no documentation ;)","commit_id":"9090f2990a8b27e8983bd14cc5f6c9ea5ea7d603"}],"rally/common/db/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    return get_impl().env_get(uuid, description\u003ddescription, extras\u003dextra)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"def env_set_status(uuid, old_status, new_status):"},{"line_number":385,"context_line":"    # check here whatever can"},{"line_number":386,"context_line":"    return get_impl().env_set_status(uuid_or_name, old_status, new_status)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_17693fbd","side":"PARENT","line":384,"updated":"2018-01-01 04:47:04.000000000","message":"old status is required to avoid concurrency issues, later when we implement properly with journal","commit_id":"5c94cd6cfc96351de51e5e5710717b14f2a70782"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    return get_impl().env_delete_cascade(uuid)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"def platform_create(env_uuid, status, plugin_name, plugin_spec):"},{"line_number":398,"context_line":"    return get_impl().platform_create(env_uuid, status,"},{"line_number":399,"context_line":"                                      plugin_name, plugin_spec)"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f91af0f_9d832405","line":397,"updated":"2018-01-01 04:47:04.000000000","message":"I remember that I forget something\u003d)","commit_id":"a019e1cadd8be83a6ec4bf2907cd5c18866f0696"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":387,"context_line":""},{"line_number":388,"context_line":"def env_set_status(uuid, old_status, new_status):"},{"line_number":389,"context_line":"    # check here whatever can"},{"line_number":390,"context_line":"    return get_impl().env_set_status(uuid, new_status)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"def env_delete_cascade(uuid):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_49971e92","line":390,"updated":"2018-01-01 04:47:04.000000000","message":"this change should be removed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":394,"context_line":"    return get_impl().env_delete_cascade(uuid)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"def platform_create(env_uuid, status, plugin_name, plugin_spec):"},{"line_number":398,"context_line":"    return get_impl().platform_create(env_uuid, status,"},{"line_number":399,"context_line":"                                      plugin_name, plugin_spec)"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_a95b4a2c","line":397,"updated":"2018-01-01 04:47:04.000000000","message":"this method should not exist.\n\nLet\u0027s implement it in env create so we can use bulk insert and one transaction.","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}],"rally/common/db/sqlalchemy/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        return query.all()"},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"    @serialize"},{"line_number":728,"context_line":"    def resource_create(self, values):"},{"line_number":729,"context_line":"        resource \u003d models.Resource()"},{"line_number":730,"context_line":"        resource.update(values)"},{"line_number":731,"context_line":"        resource.save()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_e9edd225","side":"PARENT","line":728,"updated":"2018-01-01 04:47:04.000000000","message":"all resource_* methods should be removed as well","commit_id":"11cb700a39f118b0c102ee2b4423c44b5520629b"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    ))"},{"line_number":577,"context_line":"                   .first())"},{"line_number":578,"context_line":"        if not env:"},{"line_number":579,"context_line":"            raise exceptions.DBNotFound(uuid_or_name)"},{"line_number":580,"context_line":"        return env"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    @serialize"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_0991169a","line":579,"updated":"2018-01-01 04:47:04.000000000","message":"Fixed it properly with other sutff","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        return env"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    @serialize"},{"line_number":583,"context_line":"    def env_get_status(self, uuid):"},{"line_number":584,"context_line":"        resp \u003d (self.model_query(models.Env)"},{"line_number":585,"context_line":"                .filter_by(uuid\u003duuid)"},{"line_number":586,"context_line":"                .options(sa.orm.load_only(\"status\"))"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_693d42ba","line":583,"updated":"2018-01-01 04:47:04.000000000","message":"fixed in main patch","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    @serialize"},{"line_number":597,"context_line":"    def env_create(self, name, description, extras, spec):"},{"line_number":598,"context_line":"        from rally.env import env_mgr"},{"line_number":599,"context_line":"        env \u003d models.Env()"},{"line_number":600,"context_line":"        try:"},{"line_number":601,"context_line":"            env.update({\"name\": name, \"description\": description,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_89cbe6a3","line":598,"updated":"2018-01-01 04:47:04.000000000","message":"let\u0027s just pass status to this method: \n\n1) no need for this import \n2) DB layer doesn\u0027t contain business logic related to manager\n\nBecause we are calling this method only from one place env_manager we won\u0027t be able even to shoot our legs/","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    def env_set_status(self, uuid, new_status):"},{"line_number":630,"context_line":"        return bool(self.model_query(models.Env)"},{"line_number":631,"context_line":"                        .filter_by(uuid\u003duuid)"},{"line_number":632,"context_line":"                        .update({\"status\": new_status}))"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"    def env_delete_cascade(self, uuid):"},{"line_number":635,"context_line":"        session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_c9e80e18","line":632,"updated":"2018-01-01 04:47:04.000000000","message":"it must be in such way do not fix it, please don\u0027t fix it","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":645,"context_line":"            #                 task and verify results, when they switch to Env"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    @serialize"},{"line_number":648,"context_line":"    def platform_create(self, env_uuid, status, plugin_name, plugin_spec):"},{"line_number":649,"context_line":"        platform \u003d models.Platform()"},{"line_number":650,"context_line":"        platform.update({"},{"line_number":651,"context_line":"            \"env_uuid\": env_uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_298e5a78","line":648,"updated":"2018-01-01 04:47:04.000000000","message":"we don\u0027t need it","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}],"rally/common/db/sqlalchemy/migrations/versions/7287df262dbc_move_deployment_to_env.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd27d4cb6c7f65b3b794224ebcd5ec6d604aae77","unresolved":false,"context_lines":[{"line_number":224,"context_line":"\r"},{"line_number":225,"context_line":"\r"},{"line_number":226,"context_line":"def downgrade():\r"},{"line_number":227,"context_line":"    raise exceptions.DowngradeNotSupported()\r"}],"source_content_type":"text/x-python","patch_set":64,"id":"7f96bb07_0975dff9","line":227,"updated":"2018-01-18 06:27:06.000000000","message":"it\u0027s good that we don\u0027t need to write downgrade LOL","commit_id":"9090f2990a8b27e8983bd14cc5f6c9ea5ea7d603"}],"rally/common/db/sqlalchemy/models.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    id \u003d sa.Column(sa.Integer, primary_key\u003dTrue, autoincrement\u003dTrue)"},{"line_number":148,"context_line":"    uuid \u003d sa.Column(sa.String(36), default\u003dUUID, nullable\u003dFalse)"},{"line_number":149,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":150,"context_line":"    description \u003d sa.Column(sa.Text, default\u003d\"\")"},{"line_number":151,"context_line":"    status \u003d sa.Column(sa.String(36), nullable\u003dFalse)"},{"line_number":152,"context_line":"    extra \u003d sa.Column(sa_types.MutableJSONEncodedDict, default\u003d{})"},{"line_number":153,"context_line":"    spec \u003d sa.Column(sa_types.MutableJSONEncodedDict, default\u003d{})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_974c6f77","line":150,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    plugin_name \u003d sa.Column(sa.String(36), nullable\u003dFalse)"},{"line_number":172,"context_line":"    plugin_spec \u003d sa.Column(sa_types.MutableJSONEncodedDict, default\u003d{},"},{"line_number":173,"context_line":"                            nullable\u003dFalse)"},{"line_number":174,"context_line":"    plugin_data \u003d sa.Column(sa_types.MutableJSONEncodedDict, default\u003d{})"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    platform_name \u003d sa.Column(sa.String(36))"},{"line_number":177,"context_line":"    platform_data \u003d sa.Column(sa_types.MutableJSONEncodedDict, default\u003d{})"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_494abe27","line":174,"updated":"2018-01-01 04:47:04.000000000","message":"fixed in main patch","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}],"rally/common/objects/deploy.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    consts.DeployStatus.CLEANUP_FINISHED: env_mgr.STATUS.READY"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":"_STATUS_NEW_TO_OLD \u003d {"},{"line_number":64,"context_line":"    env_mgr.STATUS.INIT: consts.DeployStatus.DEPLOY_INIT,"},{"line_number":65,"context_line":"    env_mgr.STATUS.READY: consts.DeployStatus.DEPLOY_FINISHED,"},{"line_number":66,"context_line":"    env_mgr.STATUS.FAILED_TO_CREATE: consts.DeployStatus.DEPLOY_FAILED,"},{"line_number":67,"context_line":"    env_mgr.STATUS.CLEANING: consts.DeployStatus.CLEANUP_STARTED,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_08266216","line":64,"updated":"2018-01-09 06:50:16.000000000","message":"can you copy DeployStatus consts to this module, so we can c**p in one place...","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7ed96648ff9288c7f0d19146b7f1c5d94367580e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    consts.DeployStatus.CLEANUP_FINISHED: env_mgr.STATUS.READY"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":"_STATUS_NEW_TO_OLD \u003d {"},{"line_number":64,"context_line":"    env_mgr.STATUS.INIT: consts.DeployStatus.DEPLOY_INIT,"},{"line_number":65,"context_line":"    env_mgr.STATUS.READY: consts.DeployStatus.DEPLOY_FINISHED,"},{"line_number":66,"context_line":"    env_mgr.STATUS.FAILED_TO_CREATE: consts.DeployStatus.DEPLOY_FAILED,"},{"line_number":67,"context_line":"    env_mgr.STATUS.CLEANING: consts.DeployStatus.CLEANUP_STARTED,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_008f1675","line":64,"in_reply_to":"9f91af0f_08266216","updated":"2018-01-09 10:59:49.000000000","message":"It is hard to deprecate anything in rally.consts . I hope noone was using deployment statuses, but anyway it is possible incompatible change.\nI suppose we should not waste time deprecating them and just remove as soon, as all the code will move from objects.Deployment to EnvManager","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            config[p_name] \u003d p_cfg"},{"line_number":120,"context_line":"        return {"},{"line_number":121,"context_line":"            \"id\": self._env._env[\"id\"],"},{"line_number":122,"context_line":"            \"uuid\": self._env.uuid,"},{"line_number":123,"context_line":"            \"parent_uuid\": None,"},{"line_number":124,"context_line":"            \"name\": data[\"name\"],"},{"line_number":125,"context_line":"            \"created_at\": self._env._env[\"created_at\"].strftime("}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_28cec62c","line":122,"updated":"2018-01-09 06:50:16.000000000","message":"I think we should extend data() so it will contain all information and you don\u0027t need to do self._env._env (it looks terrible)","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            envs \u003d env_mgr.EnvManager.list()"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        if status:"},{"line_number":154,"context_line":"            envs \u003d [e for e in envs if e.status \u003d\u003d status]"},{"line_number":155,"context_line":"        return [Deployment(e) for e in envs]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_a8e1769d","line":154,"updated":"2018-01-09 06:50:16.000000000","message":"Ya probably we should implement status() as well","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"},{"line_number":158,"context_line":"    def delete_by_uuid(uuid):"},{"line_number":159,"context_line":"        db.deployment_delete(uuid)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _update(self, values):"},{"line_number":162,"context_line":"        self.deployment \u003d db.deployment_update(self._env.uuid, values)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_a88f36cb","line":159,"updated":"2018-01-09 06:50:16.000000000","message":"we should use EnvManager.destroy(), EnvManager.delete() methods here","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        db.deployment_delete(uuid)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def _update(self, values):"},{"line_number":162,"context_line":"        self.deployment \u003d db.deployment_update(self._env.uuid, values)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def update_status(self, status):"},{"line_number":165,"context_line":"        self._update({\"status\": status})"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_48ba2a6e","line":162,"updated":"2018-01-09 06:50:16.000000000","message":"I belive this should have differennt implementation","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        self._update({\"completed_at\": dt.datetime.now(),"},{"line_number":229,"context_line":"                      \"status\": consts.DeployStatus.DEPLOY_FINISHED})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def add_resource(self, provider_name, type\u003dNone, info\u003dNone):"},{"line_number":232,"context_line":"        return db.resource_create({"},{"line_number":233,"context_line":"            \"deployment_uuid\": self._env.uuid,"},{"line_number":234,"context_line":"            \"provider_name\": provider_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_889b5216","line":231,"updated":"2018-01-09 06:50:16.000000000","message":"as below let\u0027 get rid of this method","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":236,"context_line":"            \"info\": info,"},{"line_number":237,"context_line":"        })"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def get_resources(self, provider_name\u003dNone, type\u003dNone):"},{"line_number":240,"context_line":"        return db.resource_get_all(self._env.uuid,"},{"line_number":241,"context_line":"                                   provider_name\u003dprovider_name, type\u003dtype)"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_a8fad63f","line":239,"updated":"2018-01-09 06:50:16.000000000","message":"Le\u0027t\u0027s just get rid of this method","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                                   provider_name\u003dprovider_name, type\u003dtype)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @staticmethod"},{"line_number":244,"context_line":"    def delete_resource(resource_id):"},{"line_number":245,"context_line":"        db.resource_delete(resource_id)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def delete(self):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_88f6f262","line":244,"updated":"2018-01-09 06:50:16.000000000","message":"I believe we should remove this method","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def delete_resource(resource_id):"},{"line_number":245,"context_line":"        db.resource_delete(resource_id)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def delete(self):"},{"line_number":248,"context_line":"        db.deployment_delete(self._env.uuid)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_0802e23d","line":247,"updated":"2018-01-09 06:50:16.000000000","message":"I believe we should call here:\n\n   env_mgr.EnvManager().destroy()\n   env_mgr.EnvManager().delete()\n\ninstead of non existing db call","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd27d4cb6c7f65b3b794224ebcd5ec6d604aae77","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        return [Deployment(e) for e in envs]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def _update(self, values):"},{"line_number":155,"context_line":"        self.deployment \u003d db.deployment_update(self._env.uuid, values)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def get_validation_context(self):"}],"source_content_type":"text/x-python","patch_set":64,"id":"7f96bb07_e968b3f5","line":154,"updated":"2018-01-18 06:27:06.000000000","message":"seems like nobody is actually calling this method, because you remove this method from db","commit_id":"9090f2990a8b27e8983bd14cc5f6c9ea5ea7d603"}],"rally/common/objects/task.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b25e5c8638aef010d1c49abc8bfaa9d158513c5","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            self.task.update(attributes)"},{"line_number":306,"context_line":"        else:"},{"line_number":307,"context_line":"            self.task \u003d task or db.task_create(attributes)"},{"line_number":308,"context_line":"            self.task[\"deployment_uuid\"] \u003d self.task[\"envs\"]"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    def __getitem__(self, key):"},{"line_number":311,"context_line":"        return self.task[key]"}],"source_content_type":"text/x-python","patch_set":21,"id":"9f91af0f_6815ae9b","line":308,"updated":"2018-01-09 06:50:16.000000000","message":"why key is called envs? maybe \"env\"? and why env and env_uuid?","commit_id":"5329f81edd43d2bbe21c4c45cbaeba74d47506d5"}],"rally/env/env.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    def __init__(self, uuid_or_name\u003dNone, _data\u003dNone):"},{"line_number":141,"context_line":"        \"\"\"Retrieves Env info from DB and initializes class.\"\"\""},{"line_number":142,"context_line":"        self._env \u003d _data or db.env_get(uuid_or_name)"},{"line_number":143,"context_line":"        self.uuid \u003d self._env[\"uuid\"]"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @property"},{"line_number":146,"context_line":"    def status(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_f7313bee","line":143,"updated":"2018-01-01 04:47:04.000000000","message":"fixed in main","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        errors \u003d []"},{"line_number":158,"context_line":"        for p_name, p_spec in spec.items():"},{"line_number":159,"context_line":"            if \"@\" not in p_name:"},{"line_number":160,"context_line":"                p_name \u003d \"default@%s\" % p_name"},{"line_number":161,"context_line":"            errors.extend(platform.Platform.validate(p_name, {}, spec, p_spec))"},{"line_number":162,"context_line":"        if errors:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_57082727","line":159,"updated":"2018-01-01 04:47:04.000000000","message":"No this hack must not be here. \n\nThis is contra intuitive and requires a documentation that nobody reads. \n\nIf you would like to hack old behavior do it somewhere else.","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        if errors:"},{"line_number":163,"context_line":"            # TODO(boris-42): make proper things here"},{"line_number":164,"context_line":"            raise exceptions.RallyException(\", \".join(errors))"},{"line_number":165,"context_line":"        self \u003d cls(_data\u003ddb.env_create(name, description, extras, spec))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        new_env_status \u003d STATUS.READY"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_17129f59","line":165,"updated":"2018-01-01 04:47:04.000000000","message":"didn\u0027t know that this is going to work actually LOL","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            \"message\": {\"type\": \"string\"},"},{"line_number":259,"context_line":"            \"traceback\": {\"type\": \"array\", \"minItems\": 3, \"maxItems\": 3}"},{"line_number":260,"context_line":"        },"},{"line_number":261,"context_line":"        \"required\": [\"available\", \"message\"],"},{"line_number":262,"context_line":"        \"additionalProperties\": False"},{"line_number":263,"context_line":"    }"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_173b7fd1","line":261,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"}],"rally/env/env_mgr.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        new_env_status \u003d STATUS.READY"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        for p_name, p_spec in spec.items():"},{"line_number":171,"context_line":"            if \"@\" not in p_name:"},{"line_number":172,"context_line":"                p_name \u003d \"default@%s\" % p_name"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            db.platform_create(self.uuid, platform.STATUS.INIT, p_name, p_spec)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_29edfaee","line":171,"updated":"2018-01-01 04:47:04.000000000","message":"this must be in one place no copy paste hacks all around the places \nwhat if we just change the spec that was provided by end user","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            try:"},{"line_number":184,"context_line":"                platform_data, plugin_data \u003d p.create()"},{"line_number":185,"context_line":"                db.platform_set_data("},{"line_number":186,"context_line":"                    p.uuid,"},{"line_number":187,"context_line":"                    platform_data\u003dplatform_data,"},{"line_number":188,"context_line":"                    plugin_data\u003dplugin_data)"},{"line_number":189,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_49e63e19","line":186,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                    platform_data\u003dplatform_data,"},{"line_number":188,"context_line":"                    plugin_data\u003dplugin_data)"},{"line_number":189,"context_line":"            except Exception:"},{"line_number":190,"context_line":"                raise"},{"line_number":191,"context_line":"                # set platform failed_to_create"},{"line_number":192,"context_line":"                # set env new status to failed_to_init to deploy"},{"line_number":193,"context_line":"                db.platform_set_status("}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_69e30207","line":190,"updated":"2018-01-01 04:47:04.000000000","message":"This is wrong, we should continue iterating to set status SKIPPED to all other platforms","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            platforms.append("},{"line_number":221,"context_line":"                plugin_cls("},{"line_number":222,"context_line":"                    p[\"plugin_spec\"],"},{"line_number":223,"context_line":"                    p[\"uuid\"],"},{"line_number":224,"context_line":"                    plugin_data\u003dp[\"plugin_data\"],"},{"line_number":225,"context_line":"                    platform_data\u003dp[\"platform_data\"],"},{"line_number":226,"context_line":"                    status\u003dp[\"status\"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_69c8e254","line":223,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":236,"context_line":"            \"name\": self._env[\"name\"],"},{"line_number":237,"context_line":"            \"description\": self._env[\"description\"],"},{"line_number":238,"context_line":"            \"status\": self._env[\"status\"],"},{"line_number":239,"context_line":"            \"spec\": self._env[\"spec\"],"},{"line_number":240,"context_line":"            \"extra\": copy.deepcopy(self._env[\"extra\"]),"},{"line_number":241,"context_line":"            \"platforms\": dict((p.get_platform(), p.platform_data)"},{"line_number":242,"context_line":"                              for p in self._get_platforms())"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_49cb9e52","line":239,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"fd27d4cb6c7f65b3b794224ebcd5ec6d604aae77","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                platforms[name][\"status\"][\"new\"] \u003d platform.STATUS.DESTROYED"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        from rally.common import objects"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"        for verifier in objects.Verifier.list():"},{"line_number":575,"context_line":"            verifier.set_deployment(self.uuid)"},{"line_number":576,"context_line":"            verifier.manager.uninstall()"}],"source_content_type":"text/x-python","patch_set":64,"id":"7f96bb07_492767cb","line":573,"updated":"2018-01-18 06:27:06.000000000","message":"this looks terrible from architecture perspecitve LOL ;) \n\nBut let\u0027s address this later...","commit_id":"9090f2990a8b27e8983bd14cc5f6c9ea5ea7d603"}],"rally/env/platform.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                                       consts.EndpointType.PUBLIC]},"},{"line_number":107,"context_line":"            \"https_insecure\": {\"type\": \"boolean\"},"},{"line_number":108,"context_line":"            \"https_cacert\": {\"type\": \"string\"},"},{"line_number":109,"context_line":"            \"admin\": {\"$ref\": \"/definitions/user\"},"},{"line_number":110,"context_line":"            \"users\": {"},{"line_number":111,"context_line":"                \"type\": \"array\","},{"line_number":112,"context_line":"                \"items\": {\"$ref\": \"/definitions/user\"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_1c2404c6","side":"PARENT","line":109,"updated":"2018-01-01 04:47:04.000000000","message":"fixed these in main patch","commit_id":"5c94cd6cfc96351de51e5e5710717b14f2a70782"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        \"\"\"Return information about platform as dictionary.\"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"@configure(\"default\", \"openstack\")"},{"line_number":82,"context_line":"class OpenStack(Platform):"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    CONFIG_SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_3c21c8b5","line":81,"updated":"2018-01-01 04:47:04.000000000","message":"let\u0027s call it existing \n\nso it will be existing@openstack","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    return wrapper"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class _PlatformStatus(utils.ImmutableMixin, utils.EnumMixin):"},{"line_number":41,"context_line":"    \"\"\"Rally Env Statuses.\"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    INIT \u003d \"INITIALIZING\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_09c5963c","line":40,"updated":"2018-01-01 04:47:04.000000000","message":"copy paste failed statuses are different in case of platforms","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"@validation.add_default(\"jsonschema\")"},{"line_number":77,"context_line":"@plugin.base()"},{"line_number":78,"context_line":"class Platform(plugin.Plugin, validation.ValidatablePluginMixin):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, spec, uuid, plugin_data\u003dNone, platform_data\u003dNone,"},{"line_number":81,"context_line":"                 status\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_69cd425c","line":78,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":77,"context_line":"@plugin.base()"},{"line_number":78,"context_line":"class Platform(plugin.Plugin, validation.ValidatablePluginMixin):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, spec, uuid, plugin_data\u003dNone, platform_data\u003dNone,"},{"line_number":81,"context_line":"                 status\u003dNone):"},{"line_number":82,"context_line":"        \"\"\"Create instance of platform and validates config."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_09da7616","line":80,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}],"rally/exceptions.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    msg_fmt \u003d \"Resource %(resource)s is not found.\""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"class DBNotFound(GetResourceNotFound):"},{"line_number":166,"context_line":"    msg_fmt \u003d \"Resource %(message)s is not found.\""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_9c19f489","line":165,"updated":"2018-01-01 04:47:04.000000000","message":"I am going to refactor this in separate patch","commit_id":"5bf818a028ee4af480c4fc74fbb8b37d14b42b70"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    msg_fmt \u003d \"Resource %(resource)s is not found.\""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"class DBNotFound(GetResourceNotFound):"},{"line_number":166,"context_line":"    msg_fmt \u003d \"Resource %(message)s is not found.\""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_6947821f","line":165,"updated":"2018-01-01 04:47:04.000000000","message":"no need in this","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}],"rally/plugins/openstack/platforms/existing.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from rally.common import utils"},{"line_number":19,"context_line":"from rally.env import platform"},{"line_number":20,"context_line":"from rally import consts"},{"line_number":21,"context_line":"from rally.plugins.openstack import osclients"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@platform.configure(name\u003d\"default\", platform\u003d\"openstack\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_496cfe35","line":21,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from rally.plugins.openstack import osclients"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"@platform.configure(name\u003d\"default\", platform\u003d\"openstack\")"},{"line_number":25,"context_line":"class OpenStack(platform.Platform):"},{"line_number":26,"context_line":"    CONFIG_SCHEMA \u003d {"},{"line_number":27,"context_line":"        \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_6969c223","line":24,"updated":"2018-01-01 04:47:04.000000000","message":"I put existing as name","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create(self):"},{"line_number":69,"context_line":"        \"\"\"Converts creds of real OpenStack to internal presentation.\"\"\""},{"line_number":70,"context_line":"        new_data \u003d copy.deepcopy(self.spec)"},{"line_number":71,"context_line":"        admin \u003d new_data.pop(\"admin\", None)"},{"line_number":72,"context_line":"        users \u003d new_data.pop(\"users\", [])"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_898206c8","line":70,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"63300a2532f5546b6a9bc1b05d24cc0daed23738","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        users \u003d new_data.pop(\"users\", [])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        if admin:"},{"line_number":75,"context_line":"            admin[\"tenant_name\"] \u003d admin.pop(\"project_name\")"},{"line_number":76,"context_line":"            admin.update(new_data)"},{"line_number":77,"context_line":"        for user in users:"},{"line_number":78,"context_line":"            user[\"tenant_name\"] \u003d user.pop(\"project_name\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_e97dd2e7","line":75,"updated":"2018-01-01 04:47:04.000000000","message":"fixed","commit_id":"c35084f95126a981f3dfe15c75e1e67193b69059"}]}
