)]}'
{"openstack/config.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"0890837e9e530d99ba780ae02062471206e64dc4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def make_connection(openstack_config\u003dNone, **kwargs):"},{"line_number":51,"context_line":"    \"\"\"Construct an OpenStack connection profile given a CloudConfig"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    :param CloudConfig cloud_config: os_client_config.CloudConfig object"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_60529c69","line":50,"updated":"2015-06-15 14:25:59.000000000","message":"I\u0027d rather we put this function inside connection.py and call it something like from_config.","commit_id":"ba1b3f9dad4dc0b5abe40f0d7bbfa442f57e1ece"}],"openstack/configuration.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"e14d9c08b7f9d6eca22ee6ae7824657bfefcaadf","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from openstack import utils"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"def get_services():"},{"line_number":26,"context_line":"    prof \u003d profile.Profile()"},{"line_number":27,"context_line":"    return [service.service_type for service in prof.get_services()]"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a41bdd9_c2d512e5","line":25,"updated":"2015-07-15 19:37:32.000000000","message":"This doesn\u0027t seem to be needed on its own - can it just be a list comprehension inside create_configuration?","commit_id":"cde0d0679bf692de30cf1526d3e0844b95985246"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"e14d9c08b7f9d6eca22ee6ae7824657bfefcaadf","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return [service.service_type for service in prof.get_services()]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def get_defaults():"},{"line_number":31,"context_line":"    # TODO(thowe): I proposed that service name defaults to None in OCC"},{"line_number":32,"context_line":"    defaults \u003d {}"},{"line_number":33,"context_line":"    for service in get_services():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a41bdd9_428582cc","line":30,"updated":"2015-07-15 19:37:32.000000000","message":"This appears to be specific to OCC and its use within the tests, and doesn\u0027t seem to be useful in the public API for users. Can this be moved into the functional test base class?\n\nSince this is using that get_services method, I would just combine the two into one and have it live in functional/base.py","commit_id":"cde0d0679bf692de30cf1526d3e0844b95985246"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7c00c79b69c89556c24e995490706805baec0c1c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    return [service.service_type for service in prof.get_services()]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def get_defaults():"},{"line_number":31,"context_line":"    # TODO(thowe): I proposed that service name defaults to None in OCC"},{"line_number":32,"context_line":"    defaults \u003d {}"},{"line_number":33,"context_line":"    for service in get_services():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a41bdd9_ad66bfb8","line":30,"in_reply_to":"9a41bdd9_428582cc","updated":"2015-07-15 20:23:34.000000000","message":"* All of this is specific to OCC, although we could probably add something to construct a connection from env vars\n* it is not specific to the functional tests, the examples use this too.\n* Anyone wanting to create a connection will need this.\n* Even if my change to OCC goes through, we will probably want to tweak the defaults.  A good example of defaults we\u0027d want to tweak would be api versions.","commit_id":"cde0d0679bf692de30cf1526d3e0844b95985246"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"e14d9c08b7f9d6eca22ee6ae7824657bfefcaadf","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return defaults"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def create_connection(cloud_config):"},{"line_number":39,"context_line":"    if cloud_config.debug:"},{"line_number":40,"context_line":"        utils.enable_logging(True, stream\u003dsys.stdout)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a41bdd9_42b262e6","line":38,"updated":"2015-07-15 19:37:32.000000000","message":"Can this entire method just be in Connection? The earliest change sets did that, and I don\u0027t think there\u0027s any benefit to having this be a separate module. I\u0027ve always seen factory methods just right next to the classes they\u0027re creating.\n\nAdditionally this needs a docstring so we know what cloud_config is, and we need some type of check that OCC is available before we try to look into the cloud_config data.","commit_id":"cde0d0679bf692de30cf1526d3e0844b95985246"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"7c00c79b69c89556c24e995490706805baec0c1c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return defaults"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def create_connection(cloud_config):"},{"line_number":39,"context_line":"    if cloud_config.debug:"},{"line_number":40,"context_line":"        utils.enable_logging(True, stream\u003dsys.stdout)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a41bdd9_adf6bf5a","line":38,"in_reply_to":"9a41bdd9_42b262e6","updated":"2015-07-15 20:23:34.000000000","message":"We don\u0027t need a check for OCC, this technically doesn\u0027t depend on it.  It just depends on some class that looks like cloud_config.","commit_id":"cde0d0679bf692de30cf1526d3e0844b95985246"}],"openstack/connection.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"be9ca19773c5aeb971536ca961f3e20dc313aa0a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def get_configuration_defaults():"},{"line_number":74,"context_line":"    \"\"\"Get the default SDK configuration\"\"\""},{"line_number":75,"context_line":"    # TODO(thowe): I proposed that service name defaults to None in OCC"},{"line_number":76,"context_line":"    defaults \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a41bdd9_c812e309","line":73,"updated":"2015-07-16 14:45:21.000000000","message":"I mentioned this in IRC yesterday, but not sure if you saw it, so just getting it on the radar:\n\nI think we should just give in and depend on OCC, as much as I disliked that idea originally. I\u0027m starting to finally understand this function, and I really dislike having to offer it. We\u0027re having to offer something that another library needs, yet we\u0027re dancing around directly using the library, so having this as a part of the public interface is a thorn that I really do not like us introducing. This ends up polluting the namespace and acts as a function that is highly specialized to something that people may not even have installed since we\u0027re dancing around the dependency. The way this is also used is just suboptimal -- if we\u0027re going to offer people a way to get started while using OCC, let\u0027s just take the config file path, do the OCC setup things, and spit out the Connection, taking care of this default stuff internally.","commit_id":"5f92800f1b207a05c75e5d01b7fc47e26b89853e"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"2bf3e539b6d27e635d6be7b76fe24826d5ecdb3e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def from_config(opts):"},{"line_number":74,"context_line":"    \"\"\"Create a connection from a configuration."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    Create a :class:`~openstack.connection.Connection` from a configuration"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_349cc15c","line":73,"updated":"2015-07-17 19:36:31.000000000","message":"I\u0027d like to see this take the OpenStackConfig object too. That gives the caller more flexibility in how it is created. For instance, specifying an oddly placed clouds.yaml file.","commit_id":"de8f799e3dd0f03645fd0026447782e6da771a7d"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bd0ccf75a788e2ca28bd185b3ab7132e56eb0fd8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def from_config(opts):"},{"line_number":74,"context_line":"    \"\"\"Create a connection from a configuration."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    Create a :class:`~openstack.connection.Connection` from a configuration"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_f48419b2","line":73,"in_reply_to":"9a41bdd9_349cc15c","updated":"2015-07-17 19:46:27.000000000","message":"If OCC would look at opts for config path, you\u0027d be golden.","commit_id":"de8f799e3dd0f03645fd0026447782e6da771a7d"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"66636d98b4627f3f39a39b74ff8bceba110182fb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"_logger \u003d logging.getLogger(__name__)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def from_config(opts):"},{"line_number":74,"context_line":"    \"\"\"Create a connection from a configuration."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    Create a :class:`~openstack.connection.Connection` from a configuration"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a41bdd9_6fbd94d6","line":73,"in_reply_to":"9a41bdd9_f48419b2","updated":"2015-07-17 20:05:14.000000000","message":"Agreed. Can be added later.","commit_id":"de8f799e3dd0f03645fd0026447782e6da771a7d"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"6e4db0cbecb8e060c9a789e79a4ee02346b627c7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    :param opts: Options class like the argparse Namespace object."},{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    import os_client_config"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    # TODO(thowe): I proposed that service name defaults to None in OCC"},{"line_number":85,"context_line":"    defaults \u003d {}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a50d1a3_25b746f6","line":82,"updated":"2015-07-22 16:01:02.000000000","message":"The import should go up at the top. I\u0027m sort of surprised the pep8 check didn\u0027t fail on this.","commit_id":"84d516f6051f44f35572cc3d55a15cfa650516dd"}],"openstack/tests/cloud_config.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"84166ba7bdabfe20ec5cf7ededf5c9127d0913c5","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import os_client_config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstack import profile"},{"line_number":23,"context_line":"from openstack import utils"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_eb850a07","line":20,"updated":"2015-07-13 20:56:36.000000000","message":"Do you think I should move this to the openstack namespace and catch potential import errors here?","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"ad5b4c2fab9175a432fa8de72be46cefc9252c10","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import os_client_config"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from openstack import profile"},{"line_number":23,"context_line":"from openstack import utils"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_26f24970","line":20,"in_reply_to":"9a41bdd9_eb850a07","updated":"2015-07-13 21:29:12.000000000","message":"I don\u0027t understand what is being asked. Is this an occ question or about this module?\n\nIf it\u0027s about this module, I don\u0027t think so. Configuration for Connection should either live next to Connection (inside connection.py) or in the utils library. This is really just a small utility to the Connection class so I\u0027d rather it not be as prominent as having its own module under openstack.","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"09832d5fcfaf1738f174c341e77883ea85a35b4e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def get(opts):"},{"line_number":27,"context_line":"    prof \u003d profile.Profile()"},{"line_number":28,"context_line":"    services \u003d [service.service_type for service in prof.get_services()]"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_e8b750f3","line":26,"updated":"2015-07-13 20:31:49.000000000","message":"This should be named to describe what it\u0027s doing, so something like get_config_args would work better.","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"ad5b4c2fab9175a432fa8de72be46cefc9252c10","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def get(opts):"},{"line_number":27,"context_line":"    prof \u003d profile.Profile()"},{"line_number":28,"context_line":"    services \u003d [service.service_type for service in prof.get_services()]"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_6147db4b","line":26,"in_reply_to":"9a41bdd9_0bbb8ee6","updated":"2015-07-13 21:29:12.000000000","message":"I don\u0027t really like client_config because client doesn\u0027t mean anything within the SDK, and it\u0027s bringing in old names, or its introducing that name because of the dependent library, which shouldn\u0027t be necessary. What about just calling it config and get_config_args? If we eventually want to put this in openstack/utils, having it called get_config_args there as well is a possibility.\n\nBy itself, get_args isn\u0027t very descriptive of what the args its returning are for.","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"84166ba7bdabfe20ec5cf7ededf5c9127d0913c5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def get(opts):"},{"line_number":27,"context_line":"    prof \u003d profile.Profile()"},{"line_number":28,"context_line":"    services \u003d [service.service_type for service in prof.get_services()]"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_0bbb8ee6","line":26,"in_reply_to":"9a41bdd9_e8b750f3","updated":"2015-07-13 20:56:36.000000000","message":"whatever it is named should line up with the module name somewhat at least.  Think I should rename the file client_config and the function get_args or something like that?","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"06d2eee468b2dae0a0ea0fbe2aaca5a56228cd9e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # Some clouds have type overridden as well as name."},{"line_number":43,"context_line":"    for service in config.get_services():"},{"line_number":44,"context_line":"        if service in services:"},{"line_number":45,"context_line":"            prof.set_version(service, config.get_api_version(service))"},{"line_number":46,"context_line":"            prof.set_name(service, config.get_service_name(service))"},{"line_number":47,"context_line":"            prof.set_visibility(service, config.get_endpoint_type(service))"},{"line_number":48,"context_line":"            prof.set_region(service, config.get_region_name(service))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_a8d94885","line":45,"updated":"2015-07-13 20:22:02.000000000","message":"If we aren\u0027t going to do the \u0027v\u0027 + change in profile, we\u0027ll need to do that here or change the override_defaults","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"09832d5fcfaf1738f174c341e77883ea85a35b4e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # Some clouds have type overridden as well as name."},{"line_number":43,"context_line":"    for service in config.get_services():"},{"line_number":44,"context_line":"        if service in services:"},{"line_number":45,"context_line":"            prof.set_version(service, config.get_api_version(service))"},{"line_number":46,"context_line":"            prof.set_name(service, config.get_service_name(service))"},{"line_number":47,"context_line":"            prof.set_visibility(service, config.get_endpoint_type(service))"},{"line_number":48,"context_line":"            prof.set_region(service, config.get_region_name(service))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_48f2fcd3","line":45,"in_reply_to":"9a41bdd9_a8d94885","updated":"2015-07-13 20:31:49.000000000","message":"I don\u0027t believe it should be done inside Profile. Inserting it somewhere in here seems like the more correct way since it\u0027s only an issue within this function. I\u0027m not familiar with OCC so I don\u0027t know if the override thing is the better way or if you should just do \"v%d\".","commit_id":"bbd1a4ec911a19071b0ddd37fb8484dbdb94d4ea"}]}
