)]}'
{"examples/server_builder.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"dfa82da61d4069bcda661eb449a0ba5329e6669b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    if args.debug:"},{"line_number":106,"context_line":"        utils.enable_logging(debug\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    conn \u003d connection.Connection(auth_url\u003dargs.auth_url,"},{"line_number":109,"context_line":"                                 project_name\u003dargs.project_name,"},{"line_number":110,"context_line":"                                 username\u003dargs.username,"},{"line_number":111,"context_line":"                                 password\u003dargs.password)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_2a0694ce","line":108,"updated":"2015-03-03 15:29:31.000000000","message":"I like the way this example uses composition, but you are missing some auth params and user preferences here that are supported on the command line.  it would be a lot easier to call make_connection from example/connection.py","commit_id":"4272987d0632e792794deafdf1a128f064978f13"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"999a44be3f2491f818d145beaeaf857eb05371fa","unresolved":false,"context_lines":[{"line_number":105,"context_line":"    if args.debug:"},{"line_number":106,"context_line":"        utils.enable_logging(debug\u003dTrue)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    conn \u003d connection.Connection(auth_url\u003dargs.auth_url,"},{"line_number":109,"context_line":"                                 project_name\u003dargs.project_name,"},{"line_number":110,"context_line":"                                 username\u003dargs.username,"},{"line_number":111,"context_line":"                                 password\u003dargs.password)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_cf9c2311","line":108,"in_reply_to":"ba7be1f8_2a0694ce","updated":"2015-03-03 17:09:15.000000000","message":"Yep, good point. I had just copied in what I had been using locally to my devstack. Fixed.","commit_id":"4272987d0632e792794deafdf1a128f064978f13"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"1ae952ce22ff10debe4185878bc97b91e7e620eb","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_image(conn):"},{"line_number":35,"context_line":"    print(\"\u003d\u003d\u003d\u003d\\nIMAGES\\n\u003d\u003d\u003d\u003d\")"},{"line_number":36,"context_line":"    images \u003d list(conn.compute.list_images(details\u003dTrue))"},{"line_number":37,"context_line":"    for id, img in enumerate(images):"},{"line_number":38,"context_line":"        print(\"{0}) {1.name}\".format(id, img))"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_5b52b135","line":36,"updated":"2015-03-03 18:22:50.000000000","message":"would be nice to use conn.image.list_images here","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"33e70285629bd02fee7ccda888418c3cef61cba9","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_image(conn):"},{"line_number":35,"context_line":"    print(\"\u003d\u003d\u003d\u003d\\nIMAGES\\n\u003d\u003d\u003d\u003d\")"},{"line_number":36,"context_line":"    images \u003d list(conn.compute.list_images(details\u003dTrue))"},{"line_number":37,"context_line":"    for id, img in enumerate(images):"},{"line_number":38,"context_line":"        print(\"{0}) {1.name}\".format(id, img))"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_6d617c38","line":36,"in_reply_to":"ba7be1f8_5b52b135","updated":"2015-03-03 18:41:52.000000000","message":"Good question. Right now Server depends on the image property being a compute.v2.image.Image type, however, what it really just needs is the ID on it, and it\u0027s the same ID as a image.v2.image.Image.\n\nWhat I think we should do, outside of this change since there\u0027s already a long dependency chain, is have a BaseImage that both of those can inherit from, and then we could use either one here.","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"1ae952ce22ff10debe4185878bc97b91e7e620eb","unresolved":false,"context_lines":[{"line_number":44,"context_line":"def create_server(conn):"},{"line_number":45,"context_line":"    flavor \u003d get_flavor(conn)"},{"line_number":46,"context_line":"    image \u003d get_image(conn)"},{"line_number":47,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":50,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_3b7eddaf","line":47,"updated":"2015-03-03 18:22:50.000000000","message":"This is blowing up py27 for me because of the eval\n\n  NameError: name \u0027servername\u0027 is not defined","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"33e70285629bd02fee7ccda888418c3cef61cba9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"def create_server(conn):"},{"line_number":45,"context_line":"    flavor \u003d get_flavor(conn)"},{"line_number":46,"context_line":"    image \u003d get_image(conn)"},{"line_number":47,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":50,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_ed4bac28","line":47,"in_reply_to":"ba7be1f8_3b7eddaf","updated":"2015-03-03 18:41:52.000000000","message":"Ah, yeah. This is part of the reason I wanted to get some unit testing for some of the more advanced examples like this one. I wrote this in a py34 virtualenv, which is my usual one, so anything that *does* actually work in py27 looks differently (prints, for example). I think my object_store example is the same, or perhaps the opposite situation...\n\nI\u0027ll get this cleaned up.","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"ba8108f641b85ec97a1059a004871318c0281dc9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"def create_server(conn):"},{"line_number":45,"context_line":"    flavor \u003d get_flavor(conn)"},{"line_number":46,"context_line":"    image \u003d get_image(conn)"},{"line_number":47,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":50,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_4dbe78af","line":47,"in_reply_to":"ba7be1f8_3b7eddaf","updated":"2015-03-03 18:37:05.000000000","message":"On 3.x raw_input has been renamed to input. On 2.x its\u0027 just raw_input, six should cover this but also you can do\n\n    try:\n        input \u003d raw_input\n    except NameError:\n        pass\n\nThe NameError will only be raised on Py3","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"dc717414224498c61e4949e03420dcabbaa8022d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"def create_server(conn):"},{"line_number":45,"context_line":"    flavor \u003d get_flavor(conn)"},{"line_number":46,"context_line":"    image \u003d get_image(conn)"},{"line_number":47,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":50,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_fe603737","line":47,"in_reply_to":"ba7be1f8_4dbe78af","updated":"2015-03-05 03:30:13.000000000","message":"six seems to be documented to support an input alias, but I guess not. Import dance it is.","commit_id":"540dfee95b2d38f4157e8538f9174e13660d3b27"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"c2740c132255f3fe8b78618cfd39a3422cdda391","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    image \u003d get_image(conn)"},{"line_number":54,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":57,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_9b51f610","line":56,"updated":"2015-03-05 12:34:25.000000000","message":"We broke something before this I think.  The get in the id method is calling Resource.get somehow:\n\n  File \"examples/server_builder.py\", line 134, in \u003cmodule\u003e\n    main()\n  File \"examples/server_builder.py\", line 124, in main\n    create_server(conn)\n  File \"examples/server_builder.py\", line 59, in create_server\n    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)\n  File \"/home/terry/sdk/openstack/compute/v2/_proxy.py\", line 113, in create_server\n    return server.Server(data).create(self.session)\n  File \"/home/terry/sdk/openstack/resource.py\", line 530, in create\n    resp \u003d self.create_by_id(session, self._attrs, self.id, path_args\u003dself)\n  File \"/home/terry/sdk/openstack/resource.py\", line 497, in create_by_id\n    attrs \u003d cls._convert_ids(attrs)\n  File \"/home/terry/sdk/openstack/resource.py\", line 471, in _convert_ids\n    converted[key] \u003d value.id\n  File \"/home/terry/sdk/openstack/resource.py\", line 391, in id\n    return self._attrs.get(self.id_attribute, None)\n  File \"/home/terry/sdk/openstack/resource.py\", line 610, in get\n    include_headers\u003dinclude_headers)\n  File \"/home/terry/sdk/openstack/resource.py\", line 563, in get_data_by_id\n    response \u003d session.get(url, service\u003dcls.service)\n  AttributeError: \u0027str\u0027 object has no attribute \u0027get\u0027","commit_id":"dceefaedd5efc20f54731c3a3c8d98824bab6920"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"a5c72d6139758015428502e2fea63142c60f5685","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    image \u003d get_image(conn)"},{"line_number":54,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":57,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_a795b841","line":56,"in_reply_to":"9a80dd14_9b51f610","updated":"2015-03-05 15:02:18.000000000","message":"That is really odd, but I can\u0027t reproduce that on py27 or py34, and I can\u0027t actually see how this would be happening. Is there something stale in your checkout or anything like that?","commit_id":"dceefaedd5efc20f54731c3a3c8d98824bab6920"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bbad058872be6c9b7e7e742da62b192030422078","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    image \u003d get_image(conn)"},{"line_number":54,"context_line":"    name \u003d input(\"Choose a name: \")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    server \u003d conn.compute.create_server(name\u003dname, flavor\u003dflavor, image\u003dimage)"},{"line_number":57,"context_line":"    print(\"Created {0.name} with ID {0.id}\".format(server))"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_4abec1d5","line":56,"in_reply_to":"9a80dd14_a795b841","updated":"2015-03-05 15:20:55.000000000","message":"That may be the case, I\u0027ll have to nuke it later and try again, but I\u0027m in the middle of something.","commit_id":"dceefaedd5efc20f54731c3a3c8d98824bab6920"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"edc07527f08b4201159d3f856a064cb252dee802","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    id \u003d int(input(\"Choose a server to rename: \"))"},{"line_number":72,"context_line":"    name \u003d input(\"Choose a new name: \")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    server \u003d conn.compute.update_server(servers[id], name\u003dname)"},{"line_number":75,"context_line":"    print(\"Updated to {0.name}\".format(server))"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a80dd14_1f80c98a","line":74,"updated":"2015-03-10 19:48:48.000000000","message":"This should be update_server(resource\u003dservers[id] to be explicit","commit_id":"dbcb50c90f8d04a08a0c3f08769a84ce09528c04"}]}
