)]}'
{"doc/source/migration.rst":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Keep backups of your db. Migrations will modify data and schema. If they fail, you could lose data."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Add your existing database to version control."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    $python keystone/backends/sqlalchemy/migrate_repo/manage.py version_control  --url\u003dsqlite:///bin/keystone.db --repository\u003dkeystone/backends/sqlalchemy/migrate_repo/"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAACn%2F%2F8oo%3D","line":14,"updated":"2011-11-23 19:59:56.000000000","message":"(rst syntax) `::` instead of `.`","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Keep backups of your db. Migrations will modify data and schema. If they fail, you could lose data."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Add your existing database to version control."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    $python keystone/backends/sqlalchemy/migrate_repo/manage.py version_control  --url\u003dsqlite:///bin/keystone.db --repository\u003dkeystone/backends/sqlalchemy/migrate_repo/"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAACn%2F%2F8ls%3D","line":14,"in_reply_to":"AAAACn%2F%2F8oo%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"You can set your database to the current schema version number using a"},{"line_number":20,"context_line":"SQL command. For example, to set your current db version to version number 1,"},{"line_number":21,"context_line":"which maps to diablo release, make this call:"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"    UPDATE migrate_version SET version\u003d1; "},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAACn%2F%2F8os%3D","line":21,"updated":"2011-11-23 19:59:56.000000000","message":"(rst syntax) need a second colon here ^^","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"You can set your database to the current schema version number using a"},{"line_number":20,"context_line":"SQL command. For example, to set your current db version to version number 1,"},{"line_number":21,"context_line":"which maps to diablo release, make this call:"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"    UPDATE migrate_version SET version\u003d1; "},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAACn%2F%2F8lo%3D","line":21,"in_reply_to":"AAAACn%2F%2F8os%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    $python keystone/backends/sqlalchemy/migrate_repo/manage.py downgrade 1   --url\u003dsqlite:///bin/keystone.db --repository\u003dkeystone/backends/sqlalchemy/migrate_repo/"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"If you get an error that says: migrate.exceptions.DatabaseNotControlledError: migrate_version"},{"line_number":36,"context_line":"that means your database is not versioned controlled. See \u0027Add your existing database to version control\u0027 above"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAACn%2F%2F8ok%3D","line":36,"updated":"2011-11-23 19:59:56.000000000","message":"Not necessary, but this could become an actual anchored link using rst, verified by sphinx_build.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/backends/sqlalchemy/models.py":[{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"d24ceaa80a3274fd6b63b5d13e83a25b67fa6de9","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    name \u003d Column(String(255), unique\u003dTrue)"},{"line_number":118,"context_line":"    type \u003d Column(String(255))"},{"line_number":119,"context_line":"    desc \u003d Column(String(255))"},{"line_number":120,"context_line":"    owner_id \u003d Column(Integer, ForeignKey(\u0027users.id\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class Tenant(Base, KeystoneBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8t4%3D","line":120,"updated":"2011-11-23 16:08:12.000000000","message":"would this work on LDAP as a back end?\nWe wont have the id as integer.Also the references wont be applicable?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"df1705326ad678f2c98dc2bb2dfb2f6ba25c5cb5","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    name \u003d Column(String(255), unique\u003dTrue)"},{"line_number":118,"context_line":"    type \u003d Column(String(255))"},{"line_number":119,"context_line":"    desc \u003d Column(String(255))"},{"line_number":120,"context_line":"    owner_id \u003d Column(Integer, ForeignKey(\u0027users.id\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class Tenant(Base, KeystoneBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8rM%3D","line":120,"in_reply_to":"AAAACn%2F%2F8rU%3D","updated":"2011-11-23 18:08:43.000000000","message":"This is what I figured even if we define a column type as integer it is still allowed by sqlalchemy to have strings!\nThis allowed user_id to be stored as string regardless of its definition.Things would fail when we have LDAP and a regular DB like postgres.\nHowever this is present in other models like tokens where user_id is defined as Integer.So this all together should be a separate issue.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"c101b076b95b904d6c127f4c13d93eb7510b94e7","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    name \u003d Column(String(255), unique\u003dTrue)"},{"line_number":118,"context_line":"    type \u003d Column(String(255))"},{"line_number":119,"context_line":"    desc \u003d Column(String(255))"},{"line_number":120,"context_line":"    owner_id \u003d Column(Integer, ForeignKey(\u0027users.id\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class Tenant(Base, KeystoneBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8rU%3D","line":120,"in_reply_to":"AAAACn%2F%2F8rs%3D","updated":"2011-11-23 17:55:32.000000000","message":"Iam still looking into it!I cud be wrong","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0ec6737da95900ae663e8806db2f94bf76b5eefd","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    name \u003d Column(String(255), unique\u003dTrue)"},{"line_number":118,"context_line":"    type \u003d Column(String(255))"},{"line_number":119,"context_line":"    desc \u003d Column(String(255))"},{"line_number":120,"context_line":"    owner_id \u003d Column(Integer, ForeignKey(\u0027users.id\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class Tenant(Base, KeystoneBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8tE%3D","line":120,"in_reply_to":"AAAACn%2F%2F8t4%3D","updated":"2011-11-23 16:35:20.000000000","message":"On an LDAP backend the ID would be a string. And that should work there. There won\u0027t be a foreign key in LDAP (unless you have back linked attribute)","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"96ac616553a77f375ebe55c465df2235b7eb40c3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    name \u003d Column(String(255), unique\u003dTrue)"},{"line_number":118,"context_line":"    type \u003d Column(String(255))"},{"line_number":119,"context_line":"    desc \u003d Column(String(255))"},{"line_number":120,"context_line":"    owner_id \u003d Column(Integer, ForeignKey(\u0027users.id\u0027))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class Tenant(Base, KeystoneBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8rs%3D","line":120,"in_reply_to":"AAAACn%2F%2F8tE%3D","updated":"2011-11-23 17:30:21.000000000","message":"Ziad correct me if I am wrong?\nLDAP not yet supports Services.Services and bunch of other models except for Tenant\u0027, \u0027User\u0027, \u0027UserRoleAssociation\u0027, \u0027Role\u0027 would remain in sql.Since user belongs to LDAP it would have an id that is made of strings.When we attempt to store it in sql I think it would fail.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/content/common/samples/endpointTemplate.json":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":3,"context_line":"        \"id\":1,"},{"line_number":4,"context_line":"        \"region\":\"North\","},{"line_number":5,"context_line":"        \"global\":true,"},{"line_number":6,"context_line":"        \"name\":\"nova\","},{"line_number":7,"context_line":"        \"type\":\"compute\","},{"line_number":8,"context_line":"        \"publicURL\":\"https://compute.north.public.com/v1\","},{"line_number":9,"context_line":"        \"internalURL\":\"https://compute.north.internal.com/v1\","}],"source_content_type":"application/json","patch_set":1,"id":"AAAACn%2F%2F8oc%3D","line":6,"updated":"2011-11-23 19:59:56.000000000","message":"Should this be in a separate commit? Is this applicable to stable/diablo?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"        \"id\":1,"},{"line_number":4,"context_line":"        \"region\":\"North\","},{"line_number":5,"context_line":"        \"global\":true,"},{"line_number":6,"context_line":"        \"name\":\"nova\","},{"line_number":7,"context_line":"        \"type\":\"compute\","},{"line_number":8,"context_line":"        \"publicURL\":\"https://compute.north.public.com/v1\","},{"line_number":9,"context_line":"        \"internalURL\":\"https://compute.north.internal.com/v1\","}],"source_content_type":"application/json","patch_set":1,"id":"AAAACn%2F%2F8mU%3D","line":6,"in_reply_to":"AAAACn%2F%2F8oc%3D","updated":"2011-11-23 21:24:53.000000000","message":"Yes. This never worked. I gues it was always done in keystone-manage.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/content/common/samples/endpointTemplate.xml":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  region\u003d\"North\" "},{"line_number":7,"context_line":"  global\u003d\"true\""},{"line_number":8,"context_line":"  type\u003d\"compute\""},{"line_number":9,"context_line":"  name\u003d\"Nova\""},{"line_number":10,"context_line":"  publicURL\u003d\"https://service-public.com/v1\""},{"line_number":11,"context_line":"  internalURL\u003d\"https://service-internal.com/v1\" "},{"line_number":12,"context_line":"  enabled\u003d\"true\"\u003e"}],"source_content_type":"application/xml","patch_set":1,"id":"AAAACn%2F%2F8oY%3D","line":9,"updated":"2011-11-23 19:59:56.000000000","message":"Should this be a seperate commit? Should this be in stable/diablo?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":6,"context_line":"  region\u003d\"North\" "},{"line_number":7,"context_line":"  global\u003d\"true\""},{"line_number":8,"context_line":"  type\u003d\"compute\""},{"line_number":9,"context_line":"  name\u003d\"Nova\""},{"line_number":10,"context_line":"  publicURL\u003d\"https://service-public.com/v1\""},{"line_number":11,"context_line":"  internalURL\u003d\"https://service-internal.com/v1\" "},{"line_number":12,"context_line":"  enabled\u003d\"true\"\u003e"}],"source_content_type":"application/xml","patch_set":1,"id":"AAAACn%2F%2F8mQ%3D","line":9,"in_reply_to":"AAAACn%2F%2F8oY%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/logic/service.py":[{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"67cf049e9d757a289267f4f568e604fb3de05843","unresolved":false,"context_lines":[{"line_number":877,"context_line":"            \"Expecting Endpoint Template type.\")"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"        dservice \u003d api.SERVICE.get(dendpoint_template.service_id)"},{"line_number":880,"context_line":"        if not dservice:"},{"line_number":881,"context_line":"            raise fault.BadRequestFault("},{"line_number":882,"context_line":"                    \"A service with that name and type doesn\u0027t exist.\")"},{"line_number":883,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8uY%3D","line":880,"updated":"2011-11-23 15:51:12.000000000","message":"In the modify call if some one is going to pass a different name and type, which is different then the actual name and type of the original endpointtemplate, the update would show success.However the service would have never got changed for the endpoint template.Should we altogether prevent updates of name and type which together identify a service?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0ec6737da95900ae663e8806db2f94bf76b5eefd","unresolved":false,"context_lines":[{"line_number":877,"context_line":"            \"Expecting Endpoint Template type.\")"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"        dservice \u003d api.SERVICE.get(dendpoint_template.service_id)"},{"line_number":880,"context_line":"        if not dservice:"},{"line_number":881,"context_line":"            raise fault.BadRequestFault("},{"line_number":882,"context_line":"                    \"A service with that name and type doesn\u0027t exist.\")"},{"line_number":883,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8tU%3D","line":880,"in_reply_to":"AAAACn%2F%2F8uY%3D","updated":"2011-11-23 16:35:20.000000000","message":"That makes sense. Yes.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"67cf049e9d757a289267f4f568e604fb3de05843","unresolved":false,"context_lines":[{"line_number":936,"context_line":"            if not self.__validate_has_admin_role(admin_token):"},{"line_number":937,"context_line":"                raise fault.UnauthorizedFault("},{"line_number":938,"context_line":"                    \"You do not have ownership of the \u0027%s\u0027 service\" \\"},{"line_number":939,"context_line":"                    % dservice.name)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        #Delete Related endpoints"},{"line_number":942,"context_line":"        endpoints \u003d api.ENDPOINT_TEMPLATE.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8uQ%3D","line":939,"updated":"2011-11-23 15:51:12.000000000","message":"is this a repetitive check?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0ec6737da95900ae663e8806db2f94bf76b5eefd","unresolved":false,"context_lines":[{"line_number":936,"context_line":"            if not self.__validate_has_admin_role(admin_token):"},{"line_number":937,"context_line":"                raise fault.UnauthorizedFault("},{"line_number":938,"context_line":"                    \"You do not have ownership of the \u0027%s\u0027 service\" \\"},{"line_number":939,"context_line":"                    % dservice.name)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        #Delete Related endpoints"},{"line_number":942,"context_line":"        endpoints \u003d api.ENDPOINT_TEMPLATE.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8tI%3D","line":939,"in_reply_to":"AAAACn%2F%2F8uI%3D","updated":"2011-11-23 16:35:20.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"fe7fe498a75057b2f86f061279a58d12c0c6851b","unresolved":false,"context_lines":[{"line_number":936,"context_line":"            if not self.__validate_has_admin_role(admin_token):"},{"line_number":937,"context_line":"                raise fault.UnauthorizedFault("},{"line_number":938,"context_line":"                    \"You do not have ownership of the \u0027%s\u0027 service\" \\"},{"line_number":939,"context_line":"                    % dservice.name)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        #Delete Related endpoints"},{"line_number":942,"context_line":"        endpoints \u003d api.ENDPOINT_TEMPLATE.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8uI%3D","line":939,"in_reply_to":"AAAACn%2F%2F8uQ%3D","updated":"2011-11-23 15:52:24.000000000","message":"My bad missed the logic.This is fine.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0ec6737da95900ae663e8806db2f94bf76b5eefd","unresolved":false,"context_lines":[{"line_number":936,"context_line":"            if not self.__validate_has_admin_role(admin_token):"},{"line_number":937,"context_line":"                raise fault.UnauthorizedFault("},{"line_number":938,"context_line":"                    \"You do not have ownership of the \u0027%s\u0027 service\" \\"},{"line_number":939,"context_line":"                    % dservice.name)"},{"line_number":940,"context_line":""},{"line_number":941,"context_line":"        #Delete Related endpoints"},{"line_number":942,"context_line":"        endpoints \u003d api.ENDPOINT_TEMPLATE.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8tM%3D","line":939,"in_reply_to":"AAAACn%2F%2F8uQ%3D","updated":"2011-11-23 16:35:20.000000000","message":"No. First check is if the user has the ServiceAdmin role. Second one is if they have the Admin role (uber rights over everything).","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/manage/__init__.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027endpointTemplates\u0027, \u0027add\u0027):"},{"line_number":189,"context_line":"        require_args(args, 9, \"Missing arguments: endpointTemplates add \""},{"line_number":190,"context_line":"            \"\u0027region\u0027 \u0027service_name\u0027 \u0027publicURL\u0027 \u0027adminURL\u0027 \u0027internalURL\u0027 \""},{"line_number":191,"context_line":"            \"\u0027enabled\u0027 \u0027global\u0027\")"},{"line_number":192,"context_line":"        version_id \u003d optional_arg(args, 9)"},{"line_number":193,"context_line":"        version_list \u003d optional_arg(args, 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8oA%3D","line":190,"updated":"2011-11-23 19:59:56.000000000","message":"Applicable to stable/diablo?","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027endpointTemplates\u0027, \u0027add\u0027):"},{"line_number":189,"context_line":"        require_args(args, 9, \"Missing arguments: endpointTemplates add \""},{"line_number":190,"context_line":"            \"\u0027region\u0027 \u0027service_name\u0027 \u0027publicURL\u0027 \u0027adminURL\u0027 \u0027internalURL\u0027 \""},{"line_number":191,"context_line":"            \"\u0027enabled\u0027 \u0027global\u0027\")"},{"line_number":192,"context_line":"        version_id \u003d optional_arg(args, 9)"},{"line_number":193,"context_line":"        version_list \u003d optional_arg(args, 10)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8mM%3D","line":190,"in_reply_to":"AAAACn%2F%2F8oA%3D","updated":"2011-11-23 21:24:53.000000000","message":"Could be. This didn\u0027t change, this just makes it clearer.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        raise optparse.OptParseError(ACTION_NOT_SUPPORTED % (\u0027tokens\u0027))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027add\u0027):"},{"line_number":244,"context_line":"        require_args(args, 4, \"Missing arguments: service add name \" \\"},{"line_number":245,"context_line":"                     \"[type] [desc] [owner_id]\""},{"line_number":246,"context_line":"            \"type\")"},{"line_number":247,"context_line":"        type \u003d optional_arg(args, 3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8oQ%3D","line":244,"updated":"2011-11-23 19:59:56.000000000","message":"\u003cname\u003e implies required, [name] implies optional -- we\u0027re doing this inconsistently in keystone-manage, but name should at least match the rest of the line :)","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        raise optparse.OptParseError(ACTION_NOT_SUPPORTED % (\u0027tokens\u0027))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027add\u0027):"},{"line_number":244,"context_line":"        require_args(args, 4, \"Missing arguments: service add name \" \\"},{"line_number":245,"context_line":"                     \"[type] [desc] [owner_id]\""},{"line_number":246,"context_line":"            \"type\")"},{"line_number":247,"context_line":"        type \u003d optional_arg(args, 3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8mI%3D","line":244,"in_reply_to":"AAAACn%2F%2F8oQ%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        type \u003d optional_arg(args, 3)"},{"line_number":248,"context_line":"        desc \u003d optional_arg(args, 4)"},{"line_number":249,"context_line":"        owner_id \u003d optional_arg(args, 5)"},{"line_number":250,"context_line":"        "},{"line_number":251,"context_line":"        if api.add_service(name\u003dobject_id, type\u003dtype, desc\u003ddesc,"},{"line_number":252,"context_line":"                           owner_id\u003downer_id):"},{"line_number":253,"context_line":"            print \"SUCCESS: Service %s created successfully.\" % (object_id,)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8oU%3D","line":250,"updated":"2011-11-23 19:59:56.000000000","message":"PEP8","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        type \u003d optional_arg(args, 3)"},{"line_number":248,"context_line":"        desc \u003d optional_arg(args, 4)"},{"line_number":249,"context_line":"        owner_id \u003d optional_arg(args, 5)"},{"line_number":250,"context_line":"        "},{"line_number":251,"context_line":"        if api.add_service(name\u003dobject_id, type\u003dtype, desc\u003ddesc,"},{"line_number":252,"context_line":"                           owner_id\u003downer_id):"},{"line_number":253,"context_line":"            print \"SUCCESS: Service %s created successfully.\" % (object_id,)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8mA%3D","line":250,"in_reply_to":"AAAACn%2F%2F8oU%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            print \"SUCCESS: Service %s created successfully.\" % (object_id,)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027list\u0027):"},{"line_number":256,"context_line":"        print_table((\u0027id\u0027, \u0027name\u0027, \u0027type\u0027, \u0027owner_id\u0027, \u0027Description\u0027),"},{"line_number":257,"context_line":"            api.list_services())"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    elif object_type \u003d\u003d \u0027service\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8oE%3D","line":256,"updated":"2011-11-23 19:59:56.000000000","message":"Other tables don\u0027t use title case (\u0027Description\u0027)","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            print \"SUCCESS: Service %s created successfully.\" % (object_id,)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027list\u0027):"},{"line_number":256,"context_line":"        print_table((\u0027id\u0027, \u0027name\u0027, \u0027type\u0027, \u0027owner_id\u0027, \u0027Description\u0027),"},{"line_number":257,"context_line":"            api.list_services())"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    elif object_type \u003d\u003d \u0027service\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8mE%3D","line":256,"in_reply_to":"AAAACn%2F%2F8oE%3D","updated":"2011-11-23 21:24:53.000000000","message":"Done","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}],"keystone/test/__init__.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                if \u0027--verbose\u0027 in sys.argv:"},{"line_number":137,"context_line":"                    options +\u003d \u0027 -v\u0027"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                cmd \u003d \u0027unit2 discover %s -f -t%s -s %s\u0027 % \\"},{"line_number":140,"context_line":"                            (options, BASE_DIR, TEST_DIR)"},{"line_number":141,"context_line":"                execute(cmd)"},{"line_number":142,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8n4%3D","side":"PARENT","line":139,"updated":"2011-11-23 19:59:56.000000000","message":"Why remove the space?","commit_id":"cf6900469ab69a9841601667e4cf5a1abd1638f1"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                if \u0027--verbose\u0027 in sys.argv:"},{"line_number":137,"context_line":"                    options +\u003d \u0027 -v\u0027"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"                cmd \u003d \u0027unit2 discover %s -f -t%s -s %s\u0027 % \\"},{"line_number":140,"context_line":"                            (options, BASE_DIR, TEST_DIR)"},{"line_number":141,"context_line":"                execute(cmd)"},{"line_number":142,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8l8%3D","side":"PARENT","line":139,"in_reply_to":"AAAACn%2F%2F8n4%3D","updated":"2011-11-23 21:24:53.000000000","message":"The space is included in the %s. If you don\u0027t you end up with two spaces. Just cleans it up.","commit_id":"cf6900469ab69a9841601667e4cf5a1abd1638f1"}],"keystone/test/functional/common.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            is_global\u003dTrue, version_id\u003dNone,"},{"line_number":899,"context_line":"            version_list\u003dNone, version_info\u003dNone, **kwargs):"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        if region is None:"},{"line_number":902,"context_line":"            region \u003d optional_str(region)"},{"line_number":903,"context_line":"        if name is None:"},{"line_number":904,"context_line":"            name \u003d optional_str(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8no%3D","line":901,"updated":"2011-11-23 19:59:56.000000000","message":"Not sure why all these if statements are necessary... see the definition for optional_str() on line 579","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            is_global\u003dTrue, version_id\u003dNone,"},{"line_number":899,"context_line":"            version_list\u003dNone, version_info\u003dNone, **kwargs):"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        if region is None:"},{"line_number":902,"context_line":"            region \u003d optional_str(region)"},{"line_number":903,"context_line":"        if name is None:"},{"line_number":904,"context_line":"            name \u003d optional_str(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8l4%3D","line":901,"in_reply_to":"AAAACn%2F%2F8no%3D","updated":"2011-11-23 21:24:53.000000000","message":"Definition sets them all to None optionally. But if they are passed in they are not None.\n\nSo this only sets defaults if the values are not passed in.\n\nThis is more sound. Previous code had errors that were highlighted by new tests.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1ff870f3f5a88ae2724314881de456c84ba0434f","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            is_global\u003dTrue, version_id\u003dNone,"},{"line_number":899,"context_line":"            version_list\u003dNone, version_info\u003dNone, **kwargs):"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        if region is None:"},{"line_number":902,"context_line":"            region \u003d optional_str(region)"},{"line_number":903,"context_line":"        if name is None:"},{"line_number":904,"context_line":"            name \u003d optional_str(name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACn%2F%2F8kw%3D","line":901,"updated":"2011-11-23 22:09:30.000000000","message":"You\u0027re effectively doing this now...\n\nif region is None:\n    if region is not None:\n        region \u003d region \n    else:\n        region \u003d unique_str()\n\nHow did adding the outer if block affect tests?","commit_id":"86c190cb527018b3821aa8ac270de008c9b3cb59"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"12942193efb210e85ce46bc5fc70f2d203dc22cf","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            is_global\u003dTrue, version_id\u003dNone,"},{"line_number":899,"context_line":"            version_list\u003dNone, version_info\u003dNone, **kwargs):"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        if region is None:"},{"line_number":902,"context_line":"            region \u003d optional_str(region)"},{"line_number":903,"context_line":"        if name is None:"},{"line_number":904,"context_line":"            name \u003d optional_str(name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACn%2F%2F8kI%3D","line":901,"in_reply_to":"AAAACn%2F%2F8kw%3D","updated":"2011-11-23 22:32:11.000000000","message":"I see what you mean. optional_str includes the check for None. I missed that. Good catch.","commit_id":"86c190cb527018b3821aa8ac270de008c9b3cb59"}],"keystone/test/functional/test_endpoints.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"c7db7d261d50b9aa104a69fa427ff60eabc34047","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            type\u003dself.service[\u0027type\u0027]).\\"},{"line_number":30,"context_line":"            json[\u0027OS-KSCATALOG:endpointTemplate\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        admin_token \u003d self.admin_token"},{"line_number":33,"context_line":"        self.admin_token \u003d self.service_admin_token"},{"line_number":34,"context_line":"        self.my_service \u003d self.create_service().json[\u0027OS-KSADM:service\u0027]"},{"line_number":35,"context_line":"        self.admin_token \u003d admin_token"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8nk%3D","line":32,"updated":"2011-11-23 19:59:56.000000000","message":"We need a better way to do achieve this pattern :)\n\nNo need to rewrite this now though","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"43bcd3de661dc4954e4c44873e98246daf9f1d1c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            type\u003dself.service[\u0027type\u0027]).\\"},{"line_number":30,"context_line":"            json[\u0027OS-KSCATALOG:endpointTemplate\u0027]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        admin_token \u003d self.admin_token"},{"line_number":33,"context_line":"        self.admin_token \u003d self.service_admin_token"},{"line_number":34,"context_line":"        self.my_service \u003d self.create_service().json[\u0027OS-KSADM:service\u0027]"},{"line_number":35,"context_line":"        self.admin_token \u003d admin_token"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACn%2F%2F8l0%3D","line":32,"in_reply_to":"AAAACn%2F%2F8nk%3D","updated":"2011-11-23 21:24:53.000000000","message":"Open to suggestions. This works for now.","commit_id":"0428f41d69814dcabe5f0090583631986a9189ea"}]}
