)]}'
{"phpunit.xml.dist":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    \u003c/testsuites\u003e"},{"line_number":8,"context_line":"    \u003clogging\u003e"},{"line_number":9,"context_line":"        \u003clog"},{"line_number":10,"context_line":"                type\u003d\"coverage-html\""},{"line_number":11,"context_line":"                target\u003d\"build/coverage\""},{"line_number":12,"context_line":"                charset\u003d\"UTF-8\""},{"line_number":13,"context_line":"                yui\u003d\"true\""}],"source_content_type":"text/xml","patch_set":5,"id":"bad4c104_06222cb9","line":10,"updated":"2014-04-29 16:54:22.000000000","message":"Why the indentation change to 8 spaces from 4?","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    \u003c/testsuites\u003e"},{"line_number":8,"context_line":"    \u003clogging\u003e"},{"line_number":9,"context_line":"        \u003clog"},{"line_number":10,"context_line":"                type\u003d\"coverage-html\""},{"line_number":11,"context_line":"                target\u003d\"build/coverage\""},{"line_number":12,"context_line":"                charset\u003d\"UTF-8\""},{"line_number":13,"context_line":"                yui\u003d\"true\""}],"source_content_type":"text/xml","patch_set":5,"id":"bad4c104_2cad5189","line":10,"in_reply_to":"bad4c104_06222cb9","updated":"2014-04-29 17:22:41.000000000","message":"Sorry, didn\u0027t even see this - IDE must have reformatted from 4 to 8 when I was configuring my own phpunit file. I\u0027ll change this back to 4.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"}],"src/OpenStack/ObjectStore/v1/Resource/StreamWrapper.php":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"ee0054c3b71e516266e0fb832b04b30a496c66dd","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            $serviceCatalog \u003d $ident-\u003eserviceCatalog();"},{"line_number":1468,"context_line":"            self::$serviceCatalogCache[$token] \u003d $serviceCatalog;"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":"            $region \u003d $this-\u003ecxt(\u0027openstack.swift.region\u0027) ?: ObjectStorage::DEFAULT_REGION;"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            $this-\u003estore \u003d ObjectStorage::newFromServiceCatalog($serviceCatalog, $token, $region, $client);"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-php","patch_set":2,"id":"3a1371a2_07bfd8d1","line":1470,"updated":"2014-04-28 19:48:56.000000000","message":"The name shouldn\u0027t have swift in it. Instead is should refer to object store. See https://wiki.openstack.org/wiki/SDK-Development\n\nI do realize other places use the incorrect naming. I crafted https://blueprints.launchpad.net/openstack-sdk-php/+spec/service-name-cleanup to deal with the other cases.","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"},{"author":{"_account_id":10161,"name":"Shaunak Kashyap","email":"shaunak.kashyap@rackspace.com","username":"ycombinator"},"change_message_id":"9d6df6a421b7f2f6be155cdc71ee7b4cbd72b766","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            $serviceCatalog \u003d $ident-\u003eserviceCatalog();"},{"line_number":1468,"context_line":"            self::$serviceCatalogCache[$token] \u003d $serviceCatalog;"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":"            $region \u003d $this-\u003ecxt(\u0027openstack.swift.region\u0027) ?: ObjectStorage::DEFAULT_REGION;"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            $this-\u003estore \u003d ObjectStorage::newFromServiceCatalog($serviceCatalog, $token, $region, $client);"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-php","patch_set":2,"id":"bad4c104_0055c61c","line":1470,"in_reply_to":"3a1371a2_07bfd8d1","updated":"2014-04-29 01:13:04.000000000","message":"Agreed. Should we leave this name change for the service-name-cleanup BP too since this review isn\u0027t really about name changing?","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"ffd81379b9739f3b0027c43096c7857553c8df3c","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            $serviceCatalog \u003d $ident-\u003eserviceCatalog();"},{"line_number":1468,"context_line":"            self::$serviceCatalogCache[$token] \u003d $serviceCatalog;"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":"            $region \u003d $this-\u003ecxt(\u0027openstack.swift.region\u0027) ?: ObjectStorage::DEFAULT_REGION;"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            $this-\u003estore \u003d ObjectStorage::newFromServiceCatalog($serviceCatalog, $token, $region, $client);"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-php","patch_set":2,"id":"bad4c104_dbf7448b","line":1470,"in_reply_to":"bad4c104_0055c61c","updated":"2014-04-29 17:01:19.000000000","message":"Yes, I think we should leave this to another patch since there are many other occurrences. Plus the work isn\u0027t relevant to this one.","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            $serviceCatalog \u003d $ident-\u003eserviceCatalog();"},{"line_number":1468,"context_line":"            self::$serviceCatalogCache[$token] \u003d $serviceCatalog;"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":"            $region \u003d $this-\u003ecxt(\u0027openstack.swift.region\u0027) ?: ObjectStorage::DEFAULT_REGION;"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            $this-\u003estore \u003d ObjectStorage::newFromServiceCatalog($serviceCatalog, $token, $region, $client);"},{"line_number":1473,"context_line":"        }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_a1feca69","line":1470,"updated":"2014-04-29 16:54:22.000000000","message":"This is a carry over comment from patch set 2 that was not responded to...\n\nThe name shouldn\u0027t have swift in it. Instead is should refer to object store. See https://wiki.openstack.org/wiki/SDK-Development\nI do realize other places use the incorrect naming. I crafted https://blueprints.launchpad.net/openstack-sdk-php/+spec/service-name-cleanup to deal with the other cases.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            $serviceCatalog \u003d $ident-\u003eserviceCatalog();"},{"line_number":1468,"context_line":"            self::$serviceCatalogCache[$token] \u003d $serviceCatalog;"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":"            $region \u003d $this-\u003ecxt(\u0027openstack.swift.region\u0027) ?: ObjectStorage::DEFAULT_REGION;"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"            $this-\u003estore \u003d ObjectStorage::newFromServiceCatalog($serviceCatalog, $token, $region, $client);"},{"line_number":1473,"context_line":"        }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_0ccecd5a","line":1470,"in_reply_to":"bad4c104_a1feca69","updated":"2014-04-29 17:22:41.000000000","message":"While I agree that we should not be using \"swift\" in context variables, changing them is not within the scope of this patch. It should be in a separate patchset that changes all of the context variable names and their usage in the code.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"}],"test/Tests/ObjectStore/v1/ObjectStorageTest.php":[{"author":{"_account_id":9700,"name":"Sam Choi","email":"sam.choi@hp.com","username":"samuelchoi"},"change_message_id":"8b8a672059bd5de32a9ae8b8e95e74f3da8eccdc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    }"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    public function testNewFromIdentityAltRegion()"},{"line_number":88,"context_line":"    {"},{"line_number":89,"context_line":"        //$ident \u003d $this-\u003eidentity();"},{"line_number":90,"context_line":"        //$ostore \u003d \\OpenStack\\ObjectStore\\v1\\ObjectStorage::newFromIdentity($ident, \u0027region-b.geo-1\u0027, $this-\u003egetTransportClient());"},{"line_number":91,"context_line":"        //$this-\u003eassertInstanceOf(\u0027\\OpenStack\\ObjectStore\\v1\\ObjectStorage\u0027, $ostore);"}],"source_content_type":"text/x-php","patch_set":1,"id":"AAAAXX%2F%2F0OA%3D","line":88,"updated":"2014-04-26 06:28:57.000000000","message":"You can feel free to delete the entire function to get rid of everything that pertains to multiple regions.","commit_id":"26e0736b00d678d848f066c4ac622ea71fb03934"},{"author":{"_account_id":9700,"name":"Sam Choi","email":"sam.choi@hp.com","username":"samuelchoi"},"change_message_id":"8b8a672059bd5de32a9ae8b8e95e74f3da8eccdc","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        //$response \u003d $client-\u003edoRequest($url, \u0027GET\u0027);"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        //$data \u003d file_get_contents($url);"},{"line_number":271,"context_line":"        //$this-\u003eassertNotEmpty($data, $url);"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        $containers \u003d $store-\u003econtainers();"},{"line_number":274,"context_line":"        //throw new \\Exception(print_r($containers, true));"}],"source_content_type":"text/x-php","patch_set":1,"id":"AAAAXX%2F%2F0Nw%3D","line":271,"updated":"2014-04-26 06:28:57.000000000","message":"This is fine for now. We can think of a way to reincorporate a similar test later since we\u0027re not asserting now.","commit_id":"26e0736b00d678d848f066c4ac622ea71fb03934"},{"author":{"_account_id":9700,"name":"Sam Choi","email":"sam.choi@hp.com","username":"samuelchoi"},"change_message_id":"8b8a672059bd5de32a9ae8b8e95e74f3da8eccdc","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        $container \u003d $store-\u003econtainer($testCollection);"},{"line_number":297,"context_line":"        $url \u003d $container-\u003eurl() . \u0027?format\u003dxml\u0027;"},{"line_number":298,"context_line":"        //$data \u003d file_get_contents($url);"},{"line_number":299,"context_line":"        //$this-\u003eassertNotEmpty($data, $url);"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        $store-\u003edeleteContainer($testCollection);"},{"line_number":302,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":1,"id":"AAAAXX%2F%2F0Ns%3D","line":299,"updated":"2014-04-26 06:28:57.000000000","message":"This is fine for now. We can think of a way to reincorporate a similar test later since we\u0027re not asserting now.","commit_id":"26e0736b00d678d848f066c4ac622ea71fb03934"}],"test/Tests/ObjectStore/v1/StreamWrapperTest.php":[{"author":{"_account_id":10161,"name":"Shaunak Kashyap","email":"shaunak.kashyap@rackspace.com","username":"ycombinator"},"change_message_id":"9d6df6a421b7f2f6be155cdc71ee7b4cbd72b766","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    public static function tearDownAfterClass()"},{"line_number":36,"context_line":"    {"},{"line_number":37,"context_line":"        // Then we need to get an instance of storage"},{"line_number":38,"context_line":"        $store \u003d self::createObjectStoreService();"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        // Delete the container and all the contents."}],"source_content_type":"text/x-php","patch_set":2,"id":"bad4c104_c33688e7","line":37,"updated":"2014-04-29 01:13:04.000000000","message":"Comment needs to change after removing the identity block.","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"}],"test/bootstrap.php":[{"author":{"_account_id":9700,"name":"Sam Choi","email":"sam.choi@hp.com","username":"samuelchoi"},"change_message_id":"8b8a672059bd5de32a9ae8b8e95e74f3da8eccdc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":1,"id":"AAAAXX%2F%2F0Nk%3D","line":3,"updated":"2014-04-26 06:28:57.000000000","message":"I may have missed its usage, but what is this new file being used for?","commit_id":"26e0736b00d678d848f066c4ac622ea71fb03934"},{"author":{"_account_id":10161,"name":"Shaunak Kashyap","email":"shaunak.kashyap@rackspace.com","username":"ycombinator"},"change_message_id":"9d6df6a421b7f2f6be155cdc71ee7b4cbd72b766","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":2,"id":"bad4c104_835c8027","line":3,"updated":"2014-04-29 01:13:04.000000000","message":"This might just be me but I find this less readable as compared to __DIR__ . \u0027/../vendor/autoload.php\u0027;","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"}],"test/example.settings.ini":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"ee0054c3b71e516266e0fb832b04b30a496c66dd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"openstack.swift.url \u003d https://region-a.geo-1.identity.hpcloudsvc.com:35357/auth/v1.0/"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"; Allow a custom Tenant ID to be used (for Rackspace implementations)"},{"line_number":30,"context_line":"openstack.swift.tenantId \u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"; Container used for testing."},{"line_number":33,"context_line":"openstack.swift.container \u003d \"I♡HPCloud\""}],"source_content_type":"text/x-properties","patch_set":2,"id":"3a1371a2_475d50e9","line":30,"updated":"2014-04-28 19:48:56.000000000","message":"As I understand it, you\u0027re saying that authentication can be scoped to one tenant/project and a service (in this case object store/swift) that will be connected to would have a second and different tenant/project?\n\nCan you provide some more details on this? I\u0027m trying to ascertain where this fits into OpenStack.","commit_id":"d9fe056839610103363cd0a08f76b05e49861cef"}],"tests/Tests/Identity/v2/IdentityServicesTest.php":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        $this-\u003eassertNotEmpty($tok2);"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":117,"context_line":"        $this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return $service;"},{"line_number":120,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_e188d2c8","side":"PARENT","line":117,"updated":"2014-04-29 16:54:22.000000000","message":"Why were these tests removed? With identity v2 you can authenticate without scoping to a token. Why should this case not be tested.","commit_id":"2fce47a7f1671e34eae221ca7a086f8baa45e58f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        // Details for user auth."},{"line_number":185,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":186,"context_line":"        $this-\u003eassertNotEmpty($details[\u0027id\u0027]);"},{"line_number":187,"context_line":"        //$this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        $ts \u003d strtotime($details[\u0027expires\u0027]);"},{"line_number":190,"context_line":"        $this-\u003eassertGreaterThan($now, $ts);"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_0cac0ded","line":187,"updated":"2014-04-29 16:54:22.000000000","message":"If authentication happens without being scoped to a tenant there shouldn\u0027t be a tenant. Why is this check commented out?","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        // Details for user auth."},{"line_number":185,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":186,"context_line":"        $this-\u003eassertNotEmpty($details[\u0027id\u0027]);"},{"line_number":187,"context_line":"        //$this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        $ts \u003d strtotime($details[\u0027expires\u0027]);"},{"line_number":190,"context_line":"        $this-\u003eassertGreaterThan($now, $ts);"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_cc178550","line":187,"in_reply_to":"bad4c104_0cac0ded","updated":"2014-04-29 17:22:41.000000000","message":"Good catch, thanks. I moved over from RAX endpoints to Devstack and this now works.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            }"},{"line_number":224,"context_line":"        }"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        $this-\u003eassertEquals(\u0027keystone\u0027, $idService[\u0027name\u0027]);"},{"line_number":227,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027]);"},{"line_number":228,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027][0][\u0027publicURL\u0027]);"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_ec40c937","line":226,"updated":"2014-04-29 16:54:22.000000000","message":"The name is a configurable option. This should either be removed or made configurable in the settings file.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            }"},{"line_number":224,"context_line":"        }"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        $this-\u003eassertEquals(\u0027keystone\u0027, $idService[\u0027name\u0027]);"},{"line_number":227,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027]);"},{"line_number":228,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027][0][\u0027publicURL\u0027]);"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_ec3e0929","line":226,"in_reply_to":"bad4c104_ec40c937","updated":"2014-04-29 17:22:41.000000000","message":"I agree - it needs to be removed. Plus it doesn\u0027t actually seem to be testing a unit of source code, just data from an API response.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        $this-\u003eassertEquals(1, count($justID));"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        $idService \u003d $justID[0];"},{"line_number":235,"context_line":"        $this-\u003eassertEquals(\u0027keystone\u0027, $idService[\u0027name\u0027]);"},{"line_number":236,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027]);"},{"line_number":237,"context_line":"        $this-\u003eassertNotEmpty($idService[\u0027endpoints\u0027][0][\u0027publicURL\u0027]);"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_4c48d55b","line":235,"updated":"2014-04-29 16:54:22.000000000","message":"Same as my comment for line 226.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"eb5d1b7214d4d4a023670da4d1324270c9e58a99","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        $service \u003d new IdentityService(self::conf(\u0027openstack.identity.url\u0027), $this-\u003egetTransportClient());"},{"line_number":82,"context_line":"        $tok2 \u003d $service-\u003eauthenticate($auth);"},{"line_number":83,"context_line":"        $this-\u003eassertEquals($tok, $tok2);"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        // Again with no tenant ID."},{"line_number":86,"context_line":"        $auth \u003d array("},{"line_number":87,"context_line":"            \u0027passwordCredentials\u0027 \u003d\u003e array("}],"source_content_type":"text/x-php","patch_set":7,"id":"9ad9bd40_bf61213b","side":"PARENT","line":84,"updated":"2014-05-05 09:37:43.000000000","message":"This does not pass against Devstack. Pure OpenStack installations seem to return a different token ID per request.","commit_id":"153e6e8b678c912dacf3ac303fbf32ae4f8fe378"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"a5e1a239414f211cf1cbb540529ba53c097d254d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        $this-\u003eassertNotEmpty($tok2);"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":117,"context_line":"        $this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return $service;"},{"line_number":120,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":7,"id":"9ad9bd40_93d03555","side":"PARENT","line":117,"updated":"2014-04-30 20:16:50.000000000","message":"Why were these tests removed? With identity v2 you can authenticate without scoping to a token. Why should this case not be tested.","commit_id":"153e6e8b678c912dacf3ac303fbf32ae4f8fe378"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"5c3f60dabbdf38b6c3a7376df432aba02224656d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        $this-\u003eassertNotEmpty($tok2);"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":117,"context_line":"        $this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return $service;"},{"line_number":120,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":7,"id":"9ad9bd40_5e5540f8","side":"PARENT","line":117,"in_reply_to":"9ad9bd40_1fd68dc5","updated":"2014-05-06 22:43:22.000000000","message":"You\u0027re right that this test here would cause a failure with pure devstack. I tested it. But, moving this test to the first case in here would be fine because the scoped case would come second.\n\nThere are a bunch of use cases to authenticate with just a user and password then scope to a tenant/project later. I\u0027ve had to do that in multiple projects. We should make sure we test this usage.","commit_id":"153e6e8b678c912dacf3ac303fbf32ae4f8fe378"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"eb5d1b7214d4d4a023670da4d1324270c9e58a99","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        $this-\u003eassertNotEmpty($tok2);"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        $details \u003d $service-\u003etokenDetails();"},{"line_number":117,"context_line":"        $this-\u003eassertFalse(isset($details[\u0027tenant\u0027]));"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return $service;"},{"line_number":120,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":7,"id":"9ad9bd40_1fd68dc5","side":"PARENT","line":117,"in_reply_to":"9ad9bd40_93d03555","updated":"2014-05-05 09:37:43.000000000","message":"Again, line 117 does not pass against Devstack. If you authenticate *without* a tenantName or tenantId, not only is the \"tenant\" key not populated, but the entire service catalog is empty.\n\nIf the catalog is empty, all subsequent test dependencies which rely on this test fail.","commit_id":"153e6e8b678c912dacf3ac303fbf32ae4f8fe378"}],"tests/Tests/ObjectStore/v1/StreamWrapperTest.php":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"namespace OpenStack\\Tests\\Storage\\ObjectStorage;"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"use OpenStack\\Common\\Transport\\FileNotFoundException;"},{"line_number":24,"context_line":"use OpenStack\\ObjectStore\\v1\\Resource\\ContainerNotEmptyException;"},{"line_number":25,"context_line":"use OpenStack\\ObjectStore\\v1\\Resource\\StreamWrapper;"},{"line_number":26,"context_line":"use OpenStack\\Tests\\TestCase;"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_4ce4553b","line":24,"updated":"2014-04-29 16:54:22.000000000","message":"ContainerNotEmptyException has been moved to OpenStack\\ObjectStore\\v1\\Exception","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"namespace OpenStack\\Tests\\Storage\\ObjectStorage;"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"use OpenStack\\Common\\Transport\\FileNotFoundException;"},{"line_number":24,"context_line":"use OpenStack\\ObjectStore\\v1\\Resource\\ContainerNotEmptyException;"},{"line_number":25,"context_line":"use OpenStack\\ObjectStore\\v1\\Resource\\StreamWrapper;"},{"line_number":26,"context_line":"use OpenStack\\Tests\\TestCase;"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_27348add","line":24,"in_reply_to":"bad4c104_4ce4553b","updated":"2014-04-29 17:22:41.000000000","message":"Done","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        try {"},{"line_number":45,"context_line":"            $container \u003d $store-\u003econtainer($cname);"},{"line_number":46,"context_line":"        }"},{"line_number":47,"context_line":"            // The container was never created."},{"line_number":48,"context_line":"        catch (FileNotFoundException $e) {"},{"line_number":49,"context_line":"            return;"},{"line_number":50,"context_line":"        }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_6c3759b1","line":47,"updated":"2014-04-29 16:54:22.000000000","message":"Can you remove the added indentation on the comment.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            \u0027username\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.username\u0027],"},{"line_number":115,"context_line":"            \u0027password\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.password\u0027],"},{"line_number":116,"context_line":"            \u0027endpoint\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.url\u0027],"},{"line_number":117,"context_line":"            \u0027tenantid\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.tenantId\u0027],"},{"line_number":118,"context_line":"            \u0027content_type\u0027 \u003d\u003e self::FTYPE,"},{"line_number":119,"context_line":"            \u0027transport_client\u0027 \u003d\u003e $this-\u003egetTransportClient()"},{"line_number":120,"context_line":"        ];"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_2c5551c6","line":117,"updated":"2014-04-29 16:54:22.000000000","message":"Why is this tested against the identity tenant while there is a separate swift tenant you\u0027ve added in other parts of the code?","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"dea9fe4ab9f5935f76f3be7a6cf47252798dec2f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            \u0027username\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.username\u0027],"},{"line_number":115,"context_line":"            \u0027password\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.password\u0027],"},{"line_number":116,"context_line":"            \u0027endpoint\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.url\u0027],"},{"line_number":117,"context_line":"            \u0027tenantid\u0027 \u003d\u003e self::$settings[\u0027openstack.identity.tenantId\u0027],"},{"line_number":118,"context_line":"            \u0027content_type\u0027 \u003d\u003e self::FTYPE,"},{"line_number":119,"context_line":"            \u0027transport_client\u0027 \u003d\u003e $this-\u003egetTransportClient()"},{"line_number":120,"context_line":"        ];"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_e753826a","line":117,"in_reply_to":"bad4c104_2c5551c6","updated":"2014-04-29 17:31:23.000000000","message":"So beforehand I was testing against RAX endpoints. Cloud Files has a strange issue where it requires a custom tenantId which is unlike any other Keystone one - hence the need for a separate context variable. \n\nI\u0027ve since shifted to testing against a pure OpenStack API, which handles Swift fine with a normal \"openstack.identity.tenantId\" value. This new patchset should have consequently removed all mention of \"openstack.swift.tenantId\" .","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"}],"tests/Tests/TestCase.php":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    {"},{"line_number":103,"context_line":"        return ObjectStorage::newFromIdentity("},{"line_number":104,"context_line":"            self::createIdentityService(),"},{"line_number":105,"context_line":"            self::$settings[\u0027openstack.swift.region\u0027],"},{"line_number":106,"context_line":"            self::getTransportClient()"},{"line_number":107,"context_line":"        );"},{"line_number":108,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_214e3ac2","line":105,"updated":"2014-04-29 16:54:22.000000000","message":"This is an addition to the settings but the settings.ini example/dist file is not updated here for it. It\u0027s also not optional here where it was in a previous patch set.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    {"},{"line_number":103,"context_line":"        return ObjectStorage::newFromIdentity("},{"line_number":104,"context_line":"            self::createIdentityService(),"},{"line_number":105,"context_line":"            self::$settings[\u0027openstack.swift.region\u0027],"},{"line_number":106,"context_line":"            self::getTransportClient()"},{"line_number":107,"context_line":"        );"},{"line_number":108,"context_line":"    }"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_2762cad8","line":105,"in_reply_to":"bad4c104_214e3ac2","updated":"2014-04-29 17:22:41.000000000","message":"\"openstack.swift.region\" has always been there:\n\nhttps://github.com/stackforge/openstack-sdk-php/blob/master/tests/example.settings.ini#L33\n\nOpenStack does not have default regions - it\u0027s up to the end-user to define it.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"}],"tests/bootstrap.php":[{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_0110564d","line":1,"updated":"2014-04-29 16:54:22.000000000","message":"What is this file being used for? This was a question Sam asked on a previous patch set. Can you elaborate on what it fixes?\n\nThe second part is that there should be a copyright notice at the top of this file if it has a reason to stay. Based on your previous reviews I think you\u0027ll put the OpenStack Foundation Apache 2 notice.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"f0f318b06123f1f690ca700bc77ca83dc9c9c64c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_87d8f654","line":1,"in_reply_to":"bad4c104_0110564d","updated":"2014-04-29 17:22:41.000000000","message":"Sorry - I keep posting comments in Gerrit but not reviewing/publishing them!\n\nThe purpose of a bootstrap file allows you to perform additional bootstrap logic before your tests run. One example could be the ability to perform fine-grained autoloading (should you need it); another could be setting configuration parameters or global context options if and when you need them. You can also implement global error controls, CLI argument logic, etc. in one dedicated place.\n\nIn short, you encapsulate all startup configuration in one place instead of throughout your test files. This is recommended practice in projects that use PHPUnit.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"97c169caacc3eb73fa25516cb0b9379d6e694c41","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_3b1d8967","line":3,"updated":"2014-04-29 15:22:16.000000000","message":"I assume the difference is parsing the service catalog.  Where is the default OpenStack behavior.  There is not sample autoload.php here.  I was just looking at this because I was curious what differences we were going to face for the Python SDK and how to handle them.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"d7745d5719ac71806ba59eb9ed051071b5340ef6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_9b877561","line":3,"in_reply_to":"bad4c104_3b1d8967","updated":"2014-04-29 15:26:23.000000000","message":"This references Composer\u0027s autoloader, the standard package management system for PHP: https://getcomposer.org/doc/00-intro.md#autoloading.\n\nI don\u0027t know what you mean by \"parsing the service catalog\" and \"default OpenStack behavior\"...","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":10517,"name":"Jamie Hannaford","email":"jamie.hannaford@rackspace.com","username":"jamiehannaford"},"change_message_id":"80ade4e50f5db151519dcb302167f49750467411","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_bb6d1907","line":3,"in_reply_to":"bad4c104_7bbc716d","updated":"2014-04-29 15:46:26.000000000","message":"It\u0027s a file that\u0027s automatically created when Composer installs vendor packages. It\u0027s a standard PHP practice, so does not highlight any difference between OpenStack or RAX :)","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"f060b3a21a4c898578053080e7d7131fb935c9c8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_7bbc716d","line":3,"in_reply_to":"bad4c104_9b877561","updated":"2014-04-29 15:43:42.000000000","message":"I may be commenting in a completely inappropriate place.  I just assumed that the /vendor/autoload.php file was a vendor specific file. \n\nI was trying to understand the differences between OpenStack and RAX.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"},{"author":{"_account_id":8512,"name":"Matt Farina","email":"matt@mattfarina.com","username":"mattfarina"},"change_message_id":"9c6275ad3ca34048d22ba9b7343d2bd9d73a4dc0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c?php"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"require dirname(__DIR__) . \u0027/vendor/autoload.php\u0027;"}],"source_content_type":"text/x-php","patch_set":5,"id":"bad4c104_0193f6a3","line":3,"in_reply_to":"bad4c104_bb6d1907","updated":"2014-04-29 16:54:22.000000000","message":"Terry, We use an external package called composer that is similar to bundler in the Ruby space. To use the packages it managers you need to include the autoloader so it can automatically autoload the packages it manages. That\u0027s what this is.","commit_id":"39b4393df0e611e00a2cb2e76c94bfe57918831f"}]}
