)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"334c73bf8a727c7faaa3ac5ef2ccba8090a19ed6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-07 22:38:16 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Adds oslo.windows project proposal spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"https://blueprints.launchpad.net/oslo-incubator/+spec/oslo.windows"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_50e95519","line":7,"updated":"2015-08-10 16:12:22.000000000","message":"I\u0027d avoid putting a registered trademark in the name of the project.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"415e3278212840862683d2de0de1e668717bc12d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-07 22:38:16 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Adds oslo.windows project proposal spec"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"https://blueprints.launchpad.net/oslo-incubator/+spec/oslo.windows"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_41ff4901","line":7,"in_reply_to":"1a4dcd0f_50e95519","updated":"2015-08-10 17:04:40.000000000","message":"I don\u0027t know how else to call it. It is what it is. The other option would have been oslo.hyperv, which would have the same issue. \n\nPlus, it is not a unique case, there is also oslo.vmware, which is in the same boat.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"}],"specs/liberty/oslo.windows.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"91d68a244eeb6fd4e991d99b92a3e2ca08a12991","unresolved":false,"context_lines":[{"line_number":1,"context_line":".."},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":" Graduating oslo.windows"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"https://blueprints.launchpad.net/oslo-incubator/+spec/oslo.windows"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_0835e1f5","line":3,"updated":"2015-08-04 18:14:50.000000000","message":"I\u0027m not sure this is the right spec template for this blueprint, since the code is not in the oslo-incubator. Does most of this code already live somewhere else?","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89ee40223d5ef03ba37201f1599b14b0d912a8d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":".."},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":" Graduating oslo.windows"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"https://blueprints.launchpad.net/oslo-incubator/+spec/oslo.windows"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_3245836f","line":3,"in_reply_to":"1a4dcd0f_0835e1f5","updated":"2015-08-05 11:29:43.000000000","message":"The code is live in multiple places: nova, networking_hyperv, cinder, ceilometer. A lot of the code is duplicated amoung the projects, which is another reason for this module.\n\nI am currently working on creating the oslo.windows repo on our github account, moving the modules / refactoring the code from the said modules and the feedback on this spec is helpful. Thanks!","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"91d68a244eeb6fd4e991d99b92a3e2ca08a12991","unresolved":false,"context_lines":[{"line_number":36,"context_line":"volumeutils.py"},{"line_number":37,"context_line":"volumeutilsv2.py"},{"line_number":38,"context_line":"constants.py"},{"line_number":39,"context_line":"utilsfactory.py"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Any other Utils class that will be used in the future and any future version"},{"line_number":42,"context_line":"of the current Utils classes, since the Hyper-V API changes with newer versions"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_88fed136","line":39,"updated":"2015-08-04 18:14:50.000000000","message":"This is a long list of modules. Normally we would be able to refer to the incubator repository to see what they are, but I don\u0027t think these are in the incubator are they? Can you give us some idea of what each one does, for context?","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89ee40223d5ef03ba37201f1599b14b0d912a8d9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"volumeutils.py"},{"line_number":37,"context_line":"volumeutilsv2.py"},{"line_number":38,"context_line":"constants.py"},{"line_number":39,"context_line":"utilsfactory.py"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Any other Utils class that will be used in the future and any future version"},{"line_number":42,"context_line":"of the current Utils classes, since the Hyper-V API changes with newer versions"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_350a4d22","line":39,"in_reply_to":"1a4dcd0f_88fed136","updated":"2015-08-05 11:29:43.000000000","message":"Sure.","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"91d68a244eeb6fd4e991d99b92a3e2ca08a12991","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"nova"},{"line_number":49,"context_line":"networking-hyperv"},{"line_number":50,"context_line":"cinder"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Public API"},{"line_number":53,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_488f69cc","line":50,"updated":"2015-08-04 18:14:50.000000000","message":"Have the nova and cinder teams agreed to be early adopters for a new library? It\u0027s late in the liberty cycle, is that work planned for mitaka?","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89ee40223d5ef03ba37201f1599b14b0d912a8d9","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"nova"},{"line_number":49,"context_line":"networking-hyperv"},{"line_number":50,"context_line":"cinder"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Public API"},{"line_number":53,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_759c55c0","line":50,"in_reply_to":"1a4dcd0f_488f69cc","updated":"2015-08-05 11:29:43.000000000","message":"I have talked to to John Garbutt and Matt Riedemann during the nova midcycle meetup, offline during lunch. They said that they like the idea and they\u0027re good with it. They said that this should be adopted in early M, but that we should start working on it until then.\n\nAs for cinder, haven\u0027t talked to them yet, Lucian Petrut, one of our Hyper-V team members is present at the cinder midcycle meetup and will talk about this module.","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"91d68a244eeb6fd4e991d99b92a3e2ca08a12991","unresolved":false,"context_lines":[{"line_number":55,"context_line":"As the behaviour can change from a Windows / Hyper-V version to another, the"},{"line_number":56,"context_line":"module named ``utilsfactory`` is creating the proper Utils classes based on"},{"line_number":57,"context_line":"the OS version. This module should be used in order to ensure proper"},{"line_number":58,"context_line":"functionality. [1]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Implementation"},{"line_number":61,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_a86dcd05","line":58,"updated":"2015-08-04 18:14:50.000000000","message":"It would be useful to organize the list of files above in a way to indicate which are public and which are private.","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89ee40223d5ef03ba37201f1599b14b0d912a8d9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"As the behaviour can change from a Windows / Hyper-V version to another, the"},{"line_number":56,"context_line":"module named ``utilsfactory`` is creating the proper Utils classes based on"},{"line_number":57,"context_line":"the OS version. This module should be used in order to ensure proper"},{"line_number":58,"context_line":"functionality. [1]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Implementation"},{"line_number":61,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_35a6cd10","line":58,"in_reply_to":"1a4dcd0f_a86dcd05","updated":"2015-08-05 11:29:43.000000000","message":"Good idea.","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"91d68a244eeb6fd4e991d99b92a3e2ca08a12991","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Launchpad project: TBA"},{"line_number":126,"context_line":"Pypi: TBA"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Adoption Notes"},{"line_number":129,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_ab570701","line":127,"updated":"2015-08-04 18:14:50.000000000","message":"Are the modules in the existing project subject to functional or integration testing on Windows servers somewhere? Will we lose that by moving the code to a library, or should a functional test job be part of the work items list?","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"89ee40223d5ef03ba37201f1599b14b0d912a8d9","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Launchpad project: TBA"},{"line_number":126,"context_line":"Pypi: TBA"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Adoption Notes"},{"line_number":129,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a4dcd0f_15c15180","line":127,"in_reply_to":"1a4dcd0f_ab570701","updated":"2015-08-05 11:29:43.000000000","message":"The modules are already in use and tested via Hyper-V CI in nova, cinder, networking_hyperv. We will want to add the Hyper-V CI to the new oslo library as well.","commit_id":"48caad5ff57b244514344165792edde22e92c1e0"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"30c5d87a50b5fb3771d9de121f1c13184f0b05ae","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Contents"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* utils/basevolumeutils.py"},{"line_number":24,"context_line":"* utils/volumeutils.py"},{"line_number":25,"context_line":"* utils/volumeutilsv2.py"},{"line_number":26,"context_line":"    - getting ISCSI initiator"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a4dcd0f_f549ee31","line":23,"updated":"2015-08-06 20:37:06.000000000","message":"Are these existing modules? Is there a better organization of the code that will be proposed? (say vhd in a separate package).  utilsfactory is probably a bad name too....right?","commit_id":"3c987d0e54514abeff8ef81e5333727fc866cd8f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7f13948f986a3ca16c504477931d72e2f760b87d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Contents"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* utils/basevolumeutils.py"},{"line_number":24,"context_line":"* utils/volumeutils.py"},{"line_number":25,"context_line":"* utils/volumeutilsv2.py"},{"line_number":26,"context_line":"    - getting ISCSI initiator"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a4dcd0f_2d9e2207","line":23,"in_reply_to":"1a4dcd0f_04b30a0b","updated":"2015-08-07 04:56:38.000000000","message":"Ok, gotcha, v1 doesn\u0027t really mean v1 of this code base, but v1 compatibility with the v1 of WMI api?","commit_id":"3c987d0e54514abeff8ef81e5333727fc866cd8f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"84463cdd88a30e5ad392e1bd01df0c7e9b7d7948","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Contents"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* utils/basevolumeutils.py"},{"line_number":24,"context_line":"* utils/volumeutils.py"},{"line_number":25,"context_line":"* utils/volumeutilsv2.py"},{"line_number":26,"context_line":"    - getting ISCSI initiator"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a4dcd0f_fc0d41e8","line":23,"in_reply_to":"1a4dcd0f_2d9e2207","updated":"2015-08-07 09:39:47.000000000","message":"yep.","commit_id":"3c987d0e54514abeff8ef81e5333727fc866cd8f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"8ef4da6f70f8f57d9a27354e44f4116c9710c7a4","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Contents"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* utils/basevolumeutils.py"},{"line_number":24,"context_line":"* utils/volumeutils.py"},{"line_number":25,"context_line":"* utils/volumeutilsv2.py"},{"line_number":26,"context_line":"    - getting ISCSI initiator"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a4dcd0f_04b30a0b","line":23,"in_reply_to":"1a4dcd0f_9e9e8761","updated":"2015-08-06 23:14:16.000000000","message":"dims: yes, they are existing modules and are already in use in nova / networking-hyperv / cinder / ceilometer and will be used in the future by other OpenStack projects in which we will get involved.\n\nhm, I was hoping for minimal change required, mostly to get it working (as an initial version). But yeah, maybe its a good idea to have subfolders like:\n\n    utils/volume/basevolumeutils.py\n    utils/volume/volumeutils.py\n    ...\n    utils/network/networkingutils.py\n    ...\n    etc\n\nPlus, this will be useful, since the newer Windows Server is coming, which means more modules will be needed (for example for vmutils - there are some differences in the Hyper-V API + extra features).\n\nas for the name ``utilsfactory``... well, it is as the name implies: a factory that creates *Utils instances. I don\u0027t know any other better name for this. Plus, it has been a good name for years, I don\u0027t see a good reason to change it now. :)\n\nJoshua: well, v1 and v2 names map to the WMI namespace they connect to. For example: v1 uses the WMI namespace \u0027root/virtualization\u0027 while v2 uses the WMI namespace \u0027root/virtualization/v2\u0027. v1 namespace is usable only in Windows / Hyper-V Server 2008 R2 and 2012, while v2 namespace is usable in 2012, 2012 R2 and vNext. Removing v1 utils will break older deployments.","commit_id":"3c987d0e54514abeff8ef81e5333727fc866cd8f"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"1aca233159b87808f798b2100e0b94dc63f14348","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Contents"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"* utils/basevolumeutils.py"},{"line_number":24,"context_line":"* utils/volumeutils.py"},{"line_number":25,"context_line":"* utils/volumeutilsv2.py"},{"line_number":26,"context_line":"    - getting ISCSI initiator"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a4dcd0f_9e9e8761","line":23,"in_reply_to":"1a4dcd0f_f549ee31","updated":"2015-08-06 22:02:38.000000000","message":"Agreed, the naming here seems odd and doesn\u0027t map to any python module naming scheme I have seen. Also I\u0027m unsure why there is v1 and v2. If this is a new common library why is a v1 needed?\n\nI\u0027d also prefer a slightly better structure rather than shoving all these under a utils/ sub-directory. I\u0027d hope there could be some kind of better layout here.","commit_id":"3c987d0e54514abeff8ef81e5333727fc866cd8f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3c9a506a1a2fefd5a2e3f055d9109cba835661c0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":" Graduating oslo.windows"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo-incubator/+spec/oslo.windows"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a4dcd0f_46395ad6","line":2,"updated":"2015-08-11 18:31:02.000000000","message":"I think \"Creating\" is more appropriate, since there is no code in the incubator to graduate.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"8c77eb3f967894a0f1f5ccc5b4c8cc809fc4b81f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"* utils/constants.py"},{"line_number":97,"context_line":"    - Hyper-V related constants"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* exceptions.py"},{"line_number":100,"context_line":"    - exceptions raised by the oslo.windows module, having a common parent."},{"line_number":101,"context_line":"* utilsfactory.py"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a4dcd0f_aef3909e","line":99,"updated":"2015-08-10 21:25:48.000000000","message":"So I\u0027m wondering, why is everything under utils/\n\nWhat\u0027s left outside of utils/ doesnt seem to be that much, so at that point, why not just put everything in utils/ into its parent directory?","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"943f35af3e9f6e4e779ef60ae2fccb2a182c48b9","unresolved":false,"context_lines":[{"line_number":96,"context_line":"* utils/constants.py"},{"line_number":97,"context_line":"    - Hyper-V related constants"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* exceptions.py"},{"line_number":100,"context_line":"    - exceptions raised by the oslo.windows module, having a common parent."},{"line_number":101,"context_line":"* utilsfactory.py"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a4dcd0f_916d9534","line":99,"in_reply_to":"1a4dcd0f_1104257c","updated":"2015-08-10 21:53:51.000000000","message":"ok dokie.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3c9a506a1a2fefd5a2e3f055d9109cba835661c0","unresolved":false,"context_lines":[{"line_number":96,"context_line":"* utils/constants.py"},{"line_number":97,"context_line":"    - Hyper-V related constants"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* exceptions.py"},{"line_number":100,"context_line":"    - exceptions raised by the oslo.windows module, having a common parent."},{"line_number":101,"context_line":"* utilsfactory.py"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a4dcd0f_83467479","line":99,"in_reply_to":"1a4dcd0f_916d9534","updated":"2015-08-11 18:31:02.000000000","message":"If the utils folder is supposed to be private, it should be _utils.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2160eec55692848915b9e42839aecad84dcb53ab","unresolved":false,"context_lines":[{"line_number":96,"context_line":"* utils/constants.py"},{"line_number":97,"context_line":"    - Hyper-V related constants"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* exceptions.py"},{"line_number":100,"context_line":"    - exceptions raised by the oslo.windows module, having a common parent."},{"line_number":101,"context_line":"* utilsfactory.py"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a4dcd0f_1104257c","line":99,"in_reply_to":"1a4dcd0f_aef3909e","updated":"2015-08-10 21:51:06.000000000","message":"So, Doug Hellmann suggested that \"it would be useful to organize the list of files above in a way to indicate which are public and which are private\" (PS1). Which is why the utils/ folder exists.\n\nSo, the idea is that it is not recommended to use the *utils modules in the utils/ folder directly, since the functionality depends on the kernel version of the OS. For example, vmutilsv2 is not usable in Windows Server 2008 R2 and vmutils is not usable in Windows Server 2012 R2 or newer (v1 namespace was removed, only v2 namespace is available).\n\nWhich is why the consumers of this library should use oslo_windows.utilsfactory to get the proper utils instance.\n\nFor example:\n\n    from oslo_windows import utilsfactory\n\n    _vmutils \u003d utilsfactory.get_vmutils()\n    vm_names \u003d _vmutils.list_instances()\n\ntl;dr version: utils/ folder is meant to be private, while utilsfactory should be used by the library\u0027s consumers.","commit_id":"74ebdc9dfccd397f109f496f9083abab19b4f2b0"}]}
