)]}'
{
  "log": [
    {
      "commit": "42b3672ee761de850924695e9bc3aa235b64a179",
      "tree": "74704add6266c9be8ba96d86a739fc7d0d265055",
      "parents": [
        "4199dec57d1848f7cfcd938326ae527c3cd94c02"
      ],
      "author": {
        "name": "Max Lincoln",
        "email": "max@devopsy.com",
        "time": "Thu Dec 12 23:24:08 2013 -0300"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 13 17:23:39 2013 -0600"
      },
      "message": "Travis\n"
    },
    {
      "commit": "4199dec57d1848f7cfcd938326ae527c3cd94c02",
      "tree": "bc911582c23fa02782f82ec06f36a79738dd1fb3",
      "parents": [
        "ed5dd7fe5e80424e1df63bef3b381d3759cd595c"
      ],
      "author": {
        "name": "Rafael Garcia",
        "email": "rafbgarcia@gmail.com",
        "time": "Thu Dec 12 22:16:58 2013 -0300"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 13 17:23:39 2013 -0600"
      },
      "message": "go fmt files authenticate.go, acceptance/00-authentication.go and acceptance/libargs.go\n"
    },
    {
      "commit": "ed5dd7fe5e80424e1df63bef3b381d3759cd595c",
      "tree": "13bc5bd614299d1331cb70419ea2b055fee072a1",
      "parents": [
        "dbc4e9ea4f0ece22c0ee19d59784060c129493d2"
      ],
      "author": {
        "name": "Rafael Garcia",
        "email": "rafbgarcia@gmail.com",
        "time": "Fri Dec 06 17:00:32 2013 -0300"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 13 17:23:39 2013 -0600"
      },
      "message": "+maxlinc - Add ApiKey authentication\n"
    },
    {
      "commit": "dbc4e9ea4f0ece22c0ee19d59784060c129493d2",
      "tree": "8b979ff51da46daef0575cf7d929193d74b0682e",
      "parents": [
        "32d297d12f12098ce870528873a9e1a41dece35e"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Nov 19 14:39:37 2013 -0800"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 13 17:23:39 2013 -0600"
      },
      "message": "Expose service catalog to interested parties.\n\nAdded ServiceCatalogerForIdentityV2 interface to allow interested\nsoftware access to the raw service catalog.  Note that the interface\nsupported must necessarily expose the specific version of Openstack\nIdentity API version, as V2 and V3 are completely incompatible with each\nother.\n"
    },
    {
      "commit": "32d297d12f12098ce870528873a9e1a41dece35e",
      "tree": "b1824176fe4b883238fd37dba441041c0e552124",
      "parents": [
        "0c1629d41040ba667917204d486dd07ef0cc3dac"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Oct 24 16:45:58 2013 -0700"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 13 17:23:39 2013 -0600"
      },
      "message": "Update godocs to include info useful for private clouds.\n"
    },
    {
      "commit": "0c1629d41040ba667917204d486dd07ef0cc3dac",
      "tree": "393432a2c656ced2f3d81a688fd0419b5909518f",
      "parents": [
        "b1ead74d29eaf1e4500dcca51677da444cae1a76"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 06 19:51:36 2013 -0600"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Fri Dec 06 19:51:36 2013 -0600"
      },
      "message": "go fmt\n"
    },
    {
      "commit": "b1ead74d29eaf1e4500dcca51677da444cae1a76",
      "tree": "d281391659582580b472b6c4cea5eed2d458094f",
      "parents": [
        "499dce120608e374c4aac267214c0409eb480caf"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Oct 29 16:03:40 2013 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Oct 29 16:03:40 2013 -0500"
      },
      "message": "initialize map to prevent runtime panic\n"
    },
    {
      "commit": "499dce120608e374c4aac267214c0409eb480caf",
      "tree": "b5bb650407e1659487c317c7b9f9d5eb8f995560",
      "parents": [
        "90356ba146044aee5c500e9f83e7098f45e86247"
      ],
      "author": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Oct 29 15:41:14 2013 -0500"
      },
      "committer": {
        "name": "Jon Perritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Oct 29 15:41:14 2013 -0500"
      },
      "message": "Fixes #21\n"
    },
    {
      "commit": "90356ba146044aee5c500e9f83e7098f45e86247",
      "tree": "94834f9528cb22637248f93e9e0f80949e9450c1",
      "parents": [
        "d8789a6a5e757e543d70ec2e7f40e42fd66eea94",
        "e4a3e427633bc8286297345b776fac4e9179dd81"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Sep 16 13:11:20 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Sep 16 13:11:20 2013 -0700"
      },
      "message": "Merge pull request #94 from rackspace/remove-dfw-default-regions-from-tests\n\nRemove the DFW default region."
    },
    {
      "commit": "e4a3e427633bc8286297345b776fac4e9179dd81",
      "tree": "94834f9528cb22637248f93e9e0f80949e9450c1",
      "parents": [
        "d8789a6a5e757e543d70ec2e7f40e42fd66eea94"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Sep 13 12:36:37 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Sep 13 12:36:37 2013 -0700"
      },
      "message": "Remove the DFW default region.\n\nDFW doesn\u0027t make sense for non-Rackspace providers, so away it goes.\nAll the tests run for me without it.\n"
    },
    {
      "commit": "d8789a6a5e757e543d70ec2e7f40e42fd66eea94",
      "tree": "47341d936e16b3b11dc2bf05be1a31d77063ae81",
      "parents": [
        "044418dd91a64202af0d54c21fc1cac155dfb62d",
        "a4db50aaee040c67efc71990bfe7ec0350b60549"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Sep 03 10:53:34 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Sep 03 10:53:34 2013 -0700"
      },
      "message": "Merge pull request #86 from justinsb/match_service_by_type_not_name\n\nAdd test for type matching"
    },
    {
      "commit": "a4db50aaee040c67efc71990bfe7ec0350b60549",
      "tree": "b04fa49d1dad172fa5f7c4aab7c1afc56079c5ca",
      "parents": [
        "017b2de6d2929820bc6e97b460be2964b7342bf7"
      ],
      "author": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sun Sep 01 10:45:07 2013 -0700"
      },
      "committer": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sun Sep 01 10:45:07 2013 -0700"
      },
      "message": "Add test for type matching\n"
    },
    {
      "commit": "044418dd91a64202af0d54c21fc1cac155dfb62d",
      "tree": "7af6f46db4a5c52d3c28b8c44e5e617e6cebe7a8",
      "parents": [
        "25a062c333ec871686db88ba493f92274b016d15",
        "21682a48e6b426abc7d2e0959fd3ae364575a256"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:36:00 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:36:00 2013 -0700"
      },
      "message": "Merge pull request #83 from justinsb/specify_tenant_name\n\nExpose auth with a tenantName"
    },
    {
      "commit": "25a062c333ec871686db88ba493f92274b016d15",
      "tree": "929e6717a31b06174f5bc1d897a91874fec4d92c",
      "parents": [
        "2fe5ef4faab085b0289cebd7be49a8f24603074a",
        "017b2de6d2929820bc6e97b460be2964b7342bf7"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:35:07 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:35:07 2013 -0700"
      },
      "message": "Merge pull request #85 from justinsb/match_service_by_type_not_name\n\nSupport matching by type in the service catalog"
    },
    {
      "commit": "2fe5ef4faab085b0289cebd7be49a8f24603074a",
      "tree": "774ec11637699200f1cca113a93de5dc2945c81e",
      "parents": [
        "9e55d656d462fb7e6a6a7d36ad8dec34e694ba27",
        "23f2a3a092b245ec86daccf0512f2ba9587070da"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:34:17 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Sun Sep 01 10:34:17 2013 -0700"
      },
      "message": "Merge pull request #84 from justinsb/url_providers\n\nAllow for custom/private providers"
    },
    {
      "commit": "017b2de6d2929820bc6e97b460be2964b7342bf7",
      "tree": "aa8b4adb1f8c70fb723beead57bf90713d9640b3",
      "parents": [
        "9e55d656d462fb7e6a6a7d36ad8dec34e694ba27"
      ],
      "author": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 18:33:19 2013 -0700"
      },
      "committer": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 18:35:19 2013 -0700"
      },
      "message": "Support matching by type in the service catalog\n\nThe type is specified by the OpenStack APIs, the name is for humans.\n\nCode should be matching by type, not by name.\n"
    },
    {
      "commit": "21682a48e6b426abc7d2e0959fd3ae364575a256",
      "tree": "06b163ff5df7a23ffb9c3915954a1038105b9f44",
      "parents": [
        "9e55d656d462fb7e6a6a7d36ad8dec34e694ba27"
      ],
      "author": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 17:56:13 2013 -0700"
      },
      "committer": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 17:56:13 2013 -0700"
      },
      "message": "Expose auth with a tenantName\n\nThe Identity API allows specification of the TenantName instead of TenantId,\nand that is much more convenient for customer-facing stuff.\n"
    },
    {
      "commit": "23f2a3a092b245ec86daccf0512f2ba9587070da",
      "tree": "774ec11637699200f1cca113a93de5dc2945c81e",
      "parents": [
        "9e55d656d462fb7e6a6a7d36ad8dec34e694ba27"
      ],
      "author": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 17:54:59 2013 -0700"
      },
      "committer": {
        "name": "Justin Santa Barbara",
        "email": "justin@fathomdb.com",
        "time": "Sat Aug 31 17:54:59 2013 -0700"
      },
      "message": "Allow for custom/private providers\n\nIf the provider name \u0027looks like\u0027 a URL, assume it is the Identity endpoint\n\n\u0027Looks like\u0027 means \"contains ://\"\n"
    },
    {
      "commit": "9e55d656d462fb7e6a6a7d36ad8dec34e694ba27",
      "tree": "3a1e55f696c2a7e577b12153451fbebd1e11645b",
      "parents": [
        "b4a677a27c49c58c04af854c643440ec2d1ba852",
        "d2188c40344f37d22135a6c0c98c82b19605c3d1"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Aug 27 11:23:09 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Aug 27 11:23:09 2013 -0700"
      },
      "message": "Merge pull request #82 from markpeek/markpeek-deleteimage\n\nAdd DeleteImageById and acceptance test for CreateImage and DeleteImageById"
    },
    {
      "commit": "d2188c40344f37d22135a6c0c98c82b19605c3d1",
      "tree": "3a1e55f696c2a7e577b12153451fbebd1e11645b",
      "parents": [
        "12a81e6be78594c9dde02395e661f4be84d229fe"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 08:16:28 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 08:16:28 2013 -0700"
      },
      "message": "Add acceptance test for CreateImage and DeleteImageById\n"
    },
    {
      "commit": "12a81e6be78594c9dde02395e661f4be84d229fe",
      "tree": "c5d9efba7a086002455ecba4ddfe0ea3980bc202",
      "parents": [
        "d27e25313fa2ed6f56aa125dddad85aa7503331d"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 08:15:57 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 08:15:57 2013 -0700"
      },
      "message": "Add DeleteImageById\n"
    },
    {
      "commit": "d27e25313fa2ed6f56aa125dddad85aa7503331d",
      "tree": "6097064b13de916cb4dee3a032bd8f146a5bd22b",
      "parents": [
        "7d3e09d2d527be3c9a5290da3b82062461ee69b8"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 07:58:09 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 07:58:09 2013 -0700"
      },
      "message": "gofmt\n"
    },
    {
      "commit": "7d3e09d2d527be3c9a5290da3b82062461ee69b8",
      "tree": "611445827a0673e6635ad9bc4f72ac89c5016a25",
      "parents": [
        "b4a677a27c49c58c04af854c643440ec2d1ba852"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 07:57:18 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Tue Aug 27 07:57:18 2013 -0700"
      },
      "message": "Remove leftover debug DumpReqJson from CreateImage\n"
    },
    {
      "commit": "b4a677a27c49c58c04af854c643440ec2d1ba852",
      "tree": "a32568434a635b3e6abe1782e4f07944e7ad549d",
      "parents": [
        "c0b07aad414c1fa07edb54e21f4a0f5d4da61057",
        "22efb6c49a68d8f023851a7c3b1d7411cdbbd2a2"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 26 21:24:42 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 26 21:24:42 2013 -0700"
      },
      "message": "Merge pull request #81 from markpeek/markpeek-image\n\nImage changes to support packer.io"
    },
    {
      "commit": "22efb6c49a68d8f023851a7c3b1d7411cdbbd2a2",
      "tree": "a32568434a635b3e6abe1782e4f07944e7ad549d",
      "parents": [
        "0dbb368a6d581fe262728d3a0997da25032dbf90"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Mon Aug 26 13:50:22 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@brkt.com",
        "time": "Mon Aug 26 13:50:22 2013 -0700"
      },
      "message": "Change Server/NewServer Metadata from interface{} to map[string]string\n"
    },
    {
      "commit": "0dbb368a6d581fe262728d3a0997da25032dbf90",
      "tree": "ee306b6f6ebf14bd7f939898a94cc4274e3bee2f",
      "parents": [
        "6b57c2339969fe57703d78a30f6ae6e715c9ddb6"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:04:48 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:04:48 2013 -0700"
      },
      "message": "Add ImageById to provide details on an image id\n"
    },
    {
      "commit": "6b57c2339969fe57703d78a30f6ae6e715c9ddb6",
      "tree": "0b722e17c8e95858fce279e049c9f3ac162b582b",
      "parents": [
        "441991d2f73ee9761b32c750d06e5c0410bce09e"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:03:26 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:03:26 2013 -0700"
      },
      "message": "Add CreateImage that creates a new image from a running server\n"
    },
    {
      "commit": "441991d2f73ee9761b32c750d06e5c0410bce09e",
      "tree": "16c8c51963dd225f6647b82c28c6d085a6575d36",
      "parents": [
        "a2818afe7a3729c4f58892f665308519e5697307"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:00:24 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 19:00:24 2013 -0700"
      },
      "message": "Add ResponseWithReauth to do WithReauth that returns a perigee.Response\n"
    },
    {
      "commit": "a2818afe7a3729c4f58892f665308519e5697307",
      "tree": "b233c18bc372f2ccbf16234deb7d8b13cf2a4c05",
      "parents": [
        "c0b07aad414c1fa07edb54e21f4a0f5d4da61057"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 15:01:12 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 24 15:01:12 2013 -0700"
      },
      "message": "Add KeyPairName to NewServers and gofmt.\n"
    },
    {
      "commit": "c0b07aad414c1fa07edb54e21f4a0f5d4da61057",
      "tree": "dafe053d0a18d4c063df9a2bf265b834debb0f5c",
      "parents": [
        "6262803675c33ab561b65595509c92b69506f1c8"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Aug 19 17:13:06 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Aug 19 17:13:06 2013 -0700"
      },
      "message": "gofmt\n"
    },
    {
      "commit": "6262803675c33ab561b65595509c92b69506f1c8",
      "tree": "55999813636a07bb5913953a0b5d3022f0ea5241",
      "parents": [
        "434eacfaced82f09be225f1b8da81f909b290d06",
        "3d151fb19d57e332a054b3b85bff8bf7d8ef1152"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:31:36 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:31:36 2013 -0700"
      },
      "message": "Merge pull request #78 from markpeek/markpeek-keypair\n\nAdd support for keypairs"
    },
    {
      "commit": "434eacfaced82f09be225f1b8da81f909b290d06",
      "tree": "e6890b2a401cb8207df563e4488471a5ab598ccc",
      "parents": [
        "8762d05d670d7eaf045df757c0de701e0ff47b04",
        "a739f2290078be903c47054bf89faef361e42732"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:14:24 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:14:24 2013 -0700"
      },
      "message": "Merge pull request #79 from markpeek/markpeek-omitquote\n\nFix quote in servers.go to include omitentry"
    },
    {
      "commit": "8762d05d670d7eaf045df757c0de701e0ff47b04",
      "tree": "554eb5ab643969789548fcca8ebd988198bd409c",
      "parents": [
        "838f42daaf2297dc2e52d99fbc28b6ead94ff4dd",
        "8f7364efae29bbb29aa61a5f9dc28a00bed2e0c0"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:13:15 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Aug 19 10:13:15 2013 -0700"
      },
      "message": "Merge pull request #76 from jamiehannaford/master\n\nREADME change"
    },
    {
      "commit": "3d151fb19d57e332a054b3b85bff8bf7d8ef1152",
      "tree": "c516b631025cfcefb5dc005ff4ee6f54ebccc96b",
      "parents": [
        "5a9151f72e3a06c7e2bea71e3e609ed2e43451a1"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sun Aug 18 12:25:10 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sun Aug 18 12:25:10 2013 -0700"
      },
      "message": "Add PrivateKey field to KeyPair for returning from CreateKeyPair\n"
    },
    {
      "commit": "a739f2290078be903c47054bf89faef361e42732",
      "tree": "ec80a3c552dfee56f38eb9387914747e07b93590",
      "parents": [
        "838f42daaf2297dc2e52d99fbc28b6ead94ff4dd"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 17 19:06:15 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 17 19:06:15 2013 -0700"
      },
      "message": "Fix quote in servers.go to include omitentry\n"
    },
    {
      "commit": "5a9151f72e3a06c7e2bea71e3e609ed2e43451a1",
      "tree": "f1d1bfbebf4583f93114bb8fd2bd341a11d9c48c",
      "parents": [
        "838f42daaf2297dc2e52d99fbc28b6ead94ff4dd"
      ],
      "author": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 17 18:59:59 2013 -0700"
      },
      "committer": {
        "name": "Mark Peek",
        "email": "mark@peek.org",
        "time": "Sat Aug 17 18:59:59 2013 -0700"
      },
      "message": "Add support for keypairs\n\nAdds support for the following keypair operations:\n- ListKeyPairs yields the list of available keypairs.\n- CreateKeyPairs will create or generate a new keypair.\n- DeleteKeyPair wil delete a keypair.\n- ShowKeyPair will yield the named keypair.\n"
    },
    {
      "commit": "8f7364efae29bbb29aa61a5f9dc28a00bed2e0c0",
      "tree": "43b3cf8ded0fb892a465e936202cfc67579d739b",
      "parents": [
        "3fd3e9c89483edbef117d170b0c6b96e1c69a8ad"
      ],
      "author": {
        "name": "Jamie Hannaford",
        "email": "jamie@limetree.org",
        "time": "Thu Aug 15 11:47:32 2013 -0500"
      },
      "committer": {
        "name": "Jamie Hannaford",
        "email": "jamie@limetree.org",
        "time": "Thu Aug 15 11:47:32 2013 -0500"
      },
      "message": "Delete LICENSE"
    },
    {
      "commit": "3fd3e9c89483edbef117d170b0c6b96e1c69a8ad",
      "tree": "7c9a23114b40eeeaa8dc11e7f25f71b2cde126a0",
      "parents": [
        "7c7e88a97e01e2a01e791b5515a32ae94567789b"
      ],
      "author": {
        "name": "Jamie Hannaford",
        "email": "jamie@limetree.org",
        "time": "Thu Aug 15 11:46:22 2013 -0500"
      },
      "committer": {
        "name": "Jamie Hannaford",
        "email": "jamie@limetree.org",
        "time": "Thu Aug 15 11:46:22 2013 -0500"
      },
      "message": "Change Bash script URL"
    },
    {
      "commit": "838f42daaf2297dc2e52d99fbc28b6ead94ff4dd",
      "tree": "c983bcfdad61dba88e9473b298cc3c4f701d082a",
      "parents": [
        "b82f3d66468c3b6bc54a0844d6215c900b208b85",
        "f339160052f04fbc9e0fe0ec17f7640a9d2fc106"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 14 14:54:45 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Aug 14 14:54:45 2013 -0700"
      },
      "message": "Merge pull request #75 from rackspace/list-addresses\n\nList addresses"
    },
    {
      "commit": "f339160052f04fbc9e0fe0ec17f7640a9d2fc106",
      "tree": "c983bcfdad61dba88e9473b298cc3c4f701d082a",
      "parents": [
        "e21808f79ea9e6249d0294e6d535cee5c11f3676"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Aug 14 14:53:32 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Aug 14 14:53:32 2013 -0700"
      },
      "message": "go fmt\n"
    },
    {
      "commit": "e21808f79ea9e6249d0294e6d535cee5c11f3676",
      "tree": "ac581efd2c5a208cbd14148e5d7fdb296eb348cd",
      "parents": [
        "b82f3d66468c3b6bc54a0844d6215c900b208b85"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Aug 14 14:48:09 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Aug 14 14:48:09 2013 -0700"
      },
      "message": "Add ListAddresses method for cloud servers\n"
    },
    {
      "commit": "b82f3d66468c3b6bc54a0844d6215c900b208b85",
      "tree": "2389512051b857347272f41e397e70107769a7c3",
      "parents": [
        "cccca1a2714f41b24d526cbcef4ff840c8d1c9d5"
      ],
      "author": {
        "name": "Jesse Noller",
        "email": "jesse.noller@rackspace.com",
        "time": "Tue Aug 13 14:11:24 2013 -0500"
      },
      "committer": {
        "name": "Jesse Noller",
        "email": "jesse.noller@rackspace.com",
        "time": "Tue Aug 13 14:11:24 2013 -0500"
      },
      "message": "Added missing license, contributors file\n"
    },
    {
      "commit": "7c7e88a97e01e2a01e791b5515a32ae94567789b",
      "tree": "ec9d69ac39d39c5f86999587ecd01fcc4c65a215",
      "parents": [
        "cccca1a2714f41b24d526cbcef4ff840c8d1c9d5"
      ],
      "author": {
        "name": "jamiehannaford",
        "email": "jamie@limetree.org",
        "time": "Tue Aug 13 14:01:26 2013 -0500"
      },
      "committer": {
        "name": "jamiehannaford",
        "email": "jamie@limetree.org",
        "time": "Tue Aug 13 14:01:26 2013 -0500"
      },
      "message": "Adding Apache 2.0 license\n"
    },
    {
      "commit": "cccca1a2714f41b24d526cbcef4ff840c8d1c9d5",
      "tree": "c4cf76d7ab9292996d8a5faeb6ec508ed6e1ada3",
      "parents": [
        "e79d8a6383365c1e3a4babefb5878f10d2fbb2e7",
        "6c2efcc125aa328f10dd11de4ca987d539c58551"
      ],
      "author": {
        "name": "Jesse Noller",
        "email": "jnoller@gmail.com",
        "time": "Tue Aug 13 09:05:02 2013 -0700"
      },
      "committer": {
        "name": "Jesse Noller",
        "email": "jnoller@gmail.com",
        "time": "Tue Aug 13 09:05:02 2013 -0700"
      },
      "message": "Merge pull request #72 from philips/patch-1\n\nREADME: remove notes about private/public workspace scripts"
    },
    {
      "commit": "6c2efcc125aa328f10dd11de4ca987d539c58551",
      "tree": "c4cf76d7ab9292996d8a5faeb6ec508ed6e1ada3",
      "parents": [
        "e79d8a6383365c1e3a4babefb5878f10d2fbb2e7"
      ],
      "author": {
        "name": "Brandon Philips",
        "email": "brandon@ifup.org",
        "time": "Tue Aug 13 08:08:03 2013 -0700"
      },
      "committer": {
        "name": "Brandon Philips",
        "email": "brandon@ifup.org",
        "time": "Tue Aug 13 08:08:03 2013 -0700"
      },
      "message": "README: remove notes about private/public workspace scripts\n\nSince this project is now announced I assume these notes can go away."
    },
    {
      "commit": "e79d8a6383365c1e3a4babefb5878f10d2fbb2e7",
      "tree": "688a42beb2c5cabbdaaad45d035306acd3dcee1c",
      "parents": [
        "8a3a6e8d9c453b3f22eacaf7df1bc112772234c4",
        "414c15c7ca6f6f2e3fa8374a91b1dff0961dc5c7"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Aug 01 15:18:50 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Aug 01 15:18:50 2013 -0700"
      },
      "message": "Merge pull request #65 from rackspace/rebuild-server-for-real\n\nImplement Rebuild server functionality."
    },
    {
      "commit": "414c15c7ca6f6f2e3fa8374a91b1dff0961dc5c7",
      "tree": "688a42beb2c5cabbdaaad45d035306acd3dcee1c",
      "parents": [
        "8a3a6e8d9c453b3f22eacaf7df1bc112772234c4"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Aug 01 15:16:46 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Aug 01 15:16:46 2013 -0700"
      },
      "message": "Implement Rebuild server functionality.\n\nI thought I\u0027d had this in already.  Apparently not.\n"
    },
    {
      "commit": "8a3a6e8d9c453b3f22eacaf7df1bc112772234c4",
      "tree": "debf5fb724e30937b21722acbc6509c8bc6f25ed",
      "parents": [
        "8c1a57acfc1637a87f1346f4aad436bc27919f97",
        "cb9eca6c84837c896cb27cbaf0975a17acbcb62c"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 31 15:51:04 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 31 15:51:04 2013 -0700"
      },
      "message": "Merge pull request #64 from rackspace/update-docs\n\nUpdate docs"
    },
    {
      "commit": "cb9eca6c84837c896cb27cbaf0975a17acbcb62c",
      "tree": "debf5fb724e30937b21722acbc6509c8bc6f25ed",
      "parents": [
        "20f1aa47a35e57b6ed9782b31b90dadecca46cba"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:33:33 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:33:33 2013 -0700"
      },
      "message": "Fix parameter omission in acceptance test\n"
    },
    {
      "commit": "20f1aa47a35e57b6ed9782b31b90dadecca46cba",
      "tree": "2d721a379ab36e46307f0ec774b2b6e831bf2aad",
      "parents": [
        "94761be7c65ab6256c477725eaf86f21713ce273"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:32:03 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:32:03 2013 -0700"
      },
      "message": "go fmt reformatting\n"
    },
    {
      "commit": "94761be7c65ab6256c477725eaf86f21713ce273",
      "tree": "a132dea4174bcf424e46c9e271c85f979a7318e3",
      "parents": [
        "8c1a57acfc1637a87f1346f4aad436bc27919f97"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:31:17 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 14:31:17 2013 -0700"
      },
      "message": "Update godoc documentation\n"
    },
    {
      "commit": "8c1a57acfc1637a87f1346f4aad436bc27919f97",
      "tree": "85eee9b31e59b5ff99f5f8ecb414039594361a23",
      "parents": [
        "e05d114303e6688841bc0d996f271050df3ddab6",
        "72ac2ddf193b5199b08f0ae7736fd6f6fed11e11"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 31 13:47:19 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 31 13:47:19 2013 -0700"
      },
      "message": "Merge pull request #63 from rackspace/update-server\n\nAdd update server capability."
    },
    {
      "commit": "72ac2ddf193b5199b08f0ae7736fd6f6fed11e11",
      "tree": "85eee9b31e59b5ff99f5f8ecb414039594361a23",
      "parents": [
        "e05d114303e6688841bc0d996f271050df3ddab6"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 13:45:05 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 31 13:45:28 2013 -0700"
      },
      "message": "Add update server capability.\n\nThis requires an updated version of Perigee, for it lacked a Put()\nmethod.  Make sure you \"go get -u github.com/racker/perigee\" prior to\ntesting, or you\u0027ll get method not defined errors.\n"
    },
    {
      "commit": "e05d114303e6688841bc0d996f271050df3ddab6",
      "tree": "e75a1bbc81289cce15141f892cf4a9fe025c5f80",
      "parents": [
        "530609ade69e82fa57589c1ffd8b052ff1f28f48",
        "15da6ab911a2885b599fe92a141cef1524bec91b"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 14:05:06 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 14:05:06 2013 -0700"
      },
      "message": "Merge pull request #62 from rackspace/rescue-servers\n\nExpose rescue/unrescue functionality."
    },
    {
      "commit": "15da6ab911a2885b599fe92a141cef1524bec91b",
      "tree": "e75a1bbc81289cce15141f892cf4a9fe025c5f80",
      "parents": [
        "530609ade69e82fa57589c1ffd8b052ff1f28f48"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 14:02:11 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 14:02:11 2013 -0700"
      },
      "message": "Expose rescue/unrescue functionality.\n"
    },
    {
      "commit": "530609ade69e82fa57589c1ffd8b052ff1f28f48",
      "tree": "0c0d821f43b2293d6d73992d4ec366fa8d0c5f56",
      "parents": [
        "c8b11d197d04e843d5c52215f078bd16ac6d502a",
        "adbecf929e9da9d7d0ff90656d24290e19c74a19"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 13:14:45 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 13:14:45 2013 -0700"
      },
      "message": "Merge pull request #61 from rackspace/reboot-server\n\nExpose reboot server support."
    },
    {
      "commit": "adbecf929e9da9d7d0ff90656d24290e19c74a19",
      "tree": "0c0d821f43b2293d6d73992d4ec366fa8d0c5f56",
      "parents": [
        "c8b11d197d04e843d5c52215f078bd16ac6d502a"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 13:13:59 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 13:13:59 2013 -0700"
      },
      "message": "Expose reboot server support.\n"
    },
    {
      "commit": "c8b11d197d04e843d5c52215f078bd16ac6d502a",
      "tree": "975b7161bee28f8b5bed68691cd8fbcbe34be25b",
      "parents": [
        "102b7df05e6356496b482ee77e7d7aef46f7dbc4",
        "bc6812399df8d424a7e952aa16ec016da45e12ff"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 12:04:35 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 12:04:35 2013 -0700"
      },
      "message": "Merge pull request #60 from rackspace/fix-list-flavors\n\nReturn details with list of flavors."
    },
    {
      "commit": "bc6812399df8d424a7e952aa16ec016da45e12ff",
      "tree": "975b7161bee28f8b5bed68691cd8fbcbe34be25b",
      "parents": [
        "102b7df05e6356496b482ee77e7d7aef46f7dbc4"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 12:01:13 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 12:01:13 2013 -0700"
      },
      "message": "Return details with list of flavors.\n"
    },
    {
      "commit": "102b7df05e6356496b482ee77e7d7aef46f7dbc4",
      "tree": "ff8f4b5d9eba7ab8bdf3bb57c3c1528044cf1145",
      "parents": [
        "05aadc303cdaaf3d74ed3fd5b61a966e20ec2ffe",
        "9b23b343bc6e109952313cbdbc728dfa7bd66e61"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 11:59:21 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 30 11:59:21 2013 -0700"
      },
      "message": "Merge pull request #59 from rackspace/fix-list-images\n\nDeliver details with list images results"
    },
    {
      "commit": "9b23b343bc6e109952313cbdbc728dfa7bd66e61",
      "tree": "ff8f4b5d9eba7ab8bdf3bb57c3c1528044cf1145",
      "parents": [
        "05aadc303cdaaf3d74ed3fd5b61a966e20ec2ffe"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 11:58:16 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 30 11:58:16 2013 -0700"
      },
      "message": "Deliver details with list images results\n"
    },
    {
      "commit": "05aadc303cdaaf3d74ed3fd5b61a966e20ec2ffe",
      "tree": "afea286b4a784e86fb210756c2acf301cd680fa5",
      "parents": [
        "3fdd9470ba633eafc6059ab8bc4642cd35f3f454",
        "887d780069d6c439c1ae8a7435366f893a40fcfc"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 17:57:12 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 17:57:12 2013 -0700"
      },
      "message": "Merge pull request #58 from rackspace/more-debt-reduction\n\nMore technical debt payoff."
    },
    {
      "commit": "887d780069d6c439c1ae8a7435366f893a40fcfc",
      "tree": "afea286b4a784e86fb210756c2acf301cd680fa5",
      "parents": [
        "3fdd9470ba633eafc6059ab8bc4642cd35f3f454"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 17:55:37 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 17:55:37 2013 -0700"
      },
      "message": "More technical debt payoff.\n\nApplied refactoring across the entire acceptance test code base.\n"
    },
    {
      "commit": "3fdd9470ba633eafc6059ab8bc4642cd35f3f454",
      "tree": "5eb049ebcbc6630b78e52568cb1e4114aec00b0d",
      "parents": [
        "d1b17c46dd69d6c6e3427861afcd2fa500cbe707",
        "002b65141b5432b9602660d6c13069ce7ce827d0"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 16:35:40 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 16:35:40 2013 -0700"
      },
      "message": "Merge pull request #57 from rackspace/fix-get-server-details-test\n\nCreate server to get details of if no other available."
    },
    {
      "commit": "002b65141b5432b9602660d6c13069ce7ce827d0",
      "tree": "5eb049ebcbc6630b78e52568cb1e4114aec00b0d",
      "parents": [
        "d1b17c46dd69d6c6e3427861afcd2fa500cbe707"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 16:30:40 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 16:30:40 2013 -0700"
      },
      "message": "Create server to get details of if no other available.\n\nIf you attempted to run 03-get-server-details.go on a cloud account\nwithout a pre-existing cloud server, it would fail.  Clearly, this isn\u0027t\nintended, as it doesn\u0027t exercise the get-server-details functionality.\nI alter the code, as a last resort, create a new server.\n\nWe check first to see if a -i parameter has been set, and if so, we use\nit directly.  Otherwise, we attempt to list servers available for the\nuser, and if at least one exists, we pick the first one we find.  Only\nif those two conditions fail do we attempt to create a new server.\n"
    },
    {
      "commit": "d1b17c46dd69d6c6e3427861afcd2fa500cbe707",
      "tree": "f651cf03d6f0c0ff62120fea4e5316316b0576a9",
      "parents": [
        "ab1cc1645d94c62fd41ec78cdbec566bcc9067de",
        "41856d6f0f9d85ed8d9d1992f06b310ec9cf610e"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 15:51:37 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 15:51:37 2013 -0700"
      },
      "message": "Merge pull request #56 from rackspace/tech-debt-reduction\n\nSimplify a few acceptance tests for illustration."
    },
    {
      "commit": "ab1cc1645d94c62fd41ec78cdbec566bcc9067de",
      "tree": "c6f00a0a2a85b335536214ba20e9839d0e5842b0",
      "parents": [
        "d7ffabf11e8b5bd428fa41c04cf91bfb9fc14523",
        "f722dbf282581dac51c277577e5f25654e8faa77"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 15:49:51 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Mon Jul 29 15:49:51 2013 -0700"
      },
      "message": "Merge pull request #55 from rackspace/tech-debt-reduction\n\nRefactor common initialization sequences."
    },
    {
      "commit": "41856d6f0f9d85ed8d9d1992f06b310ec9cf610e",
      "tree": "f651cf03d6f0c0ff62120fea4e5316316b0576a9",
      "parents": [
        "f722dbf282581dac51c277577e5f25654e8faa77"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 15:48:22 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 15:48:22 2013 -0700"
      },
      "message": "Simplify a few acceptance tests for illustration.\n\nExpect a big-bang PR following this one.  These two changes illustrate\nhow to use the newly refactored code.\n"
    },
    {
      "commit": "f722dbf282581dac51c277577e5f25654e8faa77",
      "tree": "c6f00a0a2a85b335536214ba20e9839d0e5842b0",
      "parents": [
        "d7ffabf11e8b5bd428fa41c04cf91bfb9fc14523"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 15:44:30 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 29 15:44:30 2013 -0700"
      },
      "message": "Refactor common initialization sequences.\n\nI\u0027ve been grossly violating the DRY principle for some time, in the name\nof coding velocity.  After 9 or so acceptance tests, it\u0027s tiresome,\nerror-prone, and inconvenient to have to cut-and-paste the same\ninitialization code between modules.  The time is now to fix this,\nbefore I write any more acceptance tests.  And, now that I have an\ninterface I\u0027m happy with, writing future acceptance tests should go much\nfaster than even before.\n"
    },
    {
      "commit": "d7ffabf11e8b5bd428fa41c04cf91bfb9fc14523",
      "tree": "78f757bcb7ee52679e5cd91612b29f435ca06c47",
      "parents": [
        "1782218478568a0bd11f183b51c0ee00154af23d",
        "8512e9aabbc6fc3327dcdb5946b9718f70cf6673"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 26 22:58:45 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 26 22:58:45 2013 -0700"
      },
      "message": "Merge pull request #54 from rackspace/resize-server\n\nAdd resize server action."
    },
    {
      "commit": "8512e9aabbc6fc3327dcdb5946b9718f70cf6673",
      "tree": "78f757bcb7ee52679e5cd91612b29f435ca06c47",
      "parents": [
        "1782218478568a0bd11f183b51c0ee00154af23d"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 26 22:53:29 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 26 22:53:29 2013 -0700"
      },
      "message": "Add resize server action.\n\nThis looks like it should do the trick.  Intermittently, however, some\nservers created by the acceptance test will end up in an error state.\nIt is not consistently reproducible.  When it does work, however, it\nworks as expected.  I\u0027m not sure why the behavior is variable.\n"
    },
    {
      "commit": "1782218478568a0bd11f183b51c0ee00154af23d",
      "tree": "4eccf45253137302c0873f6b061433d98d5c5f46",
      "parents": [
        "a87758a43113f31ea962cceca82d6402a5305dbe",
        "1fc8eeec4f4f889c6a9f6223abb796a4f565fb87"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 25 23:52:13 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 25 23:52:13 2013 -0700"
      },
      "message": "Merge pull request #53 from rackspace/change-password\n\nChange password"
    },
    {
      "commit": "1fc8eeec4f4f889c6a9f6223abb796a4f565fb87",
      "tree": "4eccf45253137302c0873f6b061433d98d5c5f46",
      "parents": [
        "4b235afe12269eb4267249d4c8a9c454b41d4b80"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:41:31 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:41:31 2013 -0700"
      },
      "message": "Move file into proper place.\n\nNot sure how this happened.\n"
    },
    {
      "commit": "4b235afe12269eb4267249d4c8a9c454b41d4b80",
      "tree": "c702ac4c8aaf3071dddde658544f210a22114c1d",
      "parents": [
        "80699603e7de076b6cd08e9f74affea590d4eaa3"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:39:10 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:39:10 2013 -0700"
      },
      "message": "Rearrange delete-server so it always runs last.\n\nMany tests will create servers as part of their normal operation.  We\nwant these to be cleaned up in one fell swoop.  By running\ndelete-server.go last, we accomplish this goal.\n"
    },
    {
      "commit": "80699603e7de076b6cd08e9f74affea590d4eaa3",
      "tree": "22a91908068798ac092273f4bff6a29afd9293f4",
      "parents": [
        "8935ca3c3238f856d3ec8fd3e02791cfa528b2a6"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:35:57 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 23:35:57 2013 -0700"
      },
      "message": "Make change-admin-password acceptence test autonomous\n\nUp to this commit, 09-change-admin-password.go required human\nintervention to run.\n"
    },
    {
      "commit": "8935ca3c3238f856d3ec8fd3e02791cfa528b2a6",
      "tree": "d6bffe5ff30f60f4cd1584adfc7aa1e4d127e077",
      "parents": [
        "5c305e115324107a05ebec572b95ed39eb30f596"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 21:27:06 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 21:27:06 2013 -0700"
      },
      "message": "Refactor createServer functionality for re-use.\n\nPresently, only 04-create-server.go is capable of dynamically creating\nservers as-needed.  However, many server action acceptance tests require\nservers of their own to perform tests on.  Refactoring the logic for\ncreating servers into a reusable form permits other tests to take\nadvantage of this ability.  This prevents human intervention from\nbecoming necessary to run acceptance tests.\n"
    },
    {
      "commit": "5c305e115324107a05ebec572b95ed39eb30f596",
      "tree": "6fca77f2b365298cbb63145afa848170e164a862",
      "parents": [
        "a87758a43113f31ea962cceca82d6402a5305dbe"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 19:19:43 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 25 19:19:43 2013 -0700"
      },
      "message": "Add ability to change admin password on a server\n"
    },
    {
      "commit": "a87758a43113f31ea962cceca82d6402a5305dbe",
      "tree": "bd0367d72264a0e27bd27c84241d3f67aa327019",
      "parents": [
        "d6ffd4d2a2539e9f2235782003aeef81604f2434",
        "a0a558435aa4cb539da571c3d4b447e5f9427727"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 24 13:17:15 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Wed Jul 24 13:17:15 2013 -0700"
      },
      "message": "Merge pull request #52 from rackspace/ServerDetails\n\nFix ListServers to yield full details."
    },
    {
      "commit": "a0a558435aa4cb539da571c3d4b447e5f9427727",
      "tree": "99efb5e037e7f1be0f0f0777710af24a97c1c825",
      "parents": [
        "7327a6ed2d8fcd12473d60e9b0072eccbd58947a"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 24 13:14:17 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Wed Jul 24 13:14:17 2013 -0700"
      },
      "message": "Fix ListServers to yield full details.\n\nAlso, provide ListServersLinksOnly() if you want to retain the older\nbehavior.  LinksOnly variant isn\u0027t terribly useful though, as it\nprovides virtually _no_ useful information other than the mere existence\nof a server.\n\nFixes #45.\n"
    },
    {
      "commit": "d6ffd4d2a2539e9f2235782003aeef81604f2434",
      "tree": "8badf618a57fa565818f89691cf0afddb170d569",
      "parents": [
        "7327a6ed2d8fcd12473d60e9b0072eccbd58947a",
        "7bd1fba42f7d8c57a58374de0e9b6cf96ad12916"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 16 17:35:42 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 16 17:35:42 2013 -0700"
      },
      "message": "Merge pull request #47 from rackspace/reauth-enable-api\n\nEnable reauth capability for all existing API EPs."
    },
    {
      "commit": "7bd1fba42f7d8c57a58374de0e9b6cf96ad12916",
      "tree": "8badf618a57fa565818f89691cf0afddb170d569",
      "parents": [
        "7327a6ed2d8fcd12473d60e9b0072eccbd58947a"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 17:30:43 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 17:30:43 2013 -0700"
      },
      "message": "Enable reauth capability for all existing API EPs.\n"
    },
    {
      "commit": "7327a6ed2d8fcd12473d60e9b0072eccbd58947a",
      "tree": "dd34da18b9aa9c46e9297ffe3134a56fb86ff3c5",
      "parents": [
        "54881f86e4392bb0e255ad97ebc6ad5735476998",
        "fb58669dd098ceb6fb65652fdbb2a1a639826a04"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 16 17:11:13 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Tue Jul 16 17:11:13 2013 -0700"
      },
      "message": "Merge pull request #46 from rackspace/reauth\n\nImplement Reauth capability"
    },
    {
      "commit": "fb58669dd098ceb6fb65652fdbb2a1a639826a04",
      "tree": "dd34da18b9aa9c46e9297ffe3134a56fb86ff3c5",
      "parents": [
        "9e64f6bc81fe02aff17838c08c721e0a6fe9c703"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 17:00:14 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 17:00:14 2013 -0700"
      },
      "message": "Remove debugging infrastructure.\n\nBug was found, and things seems to work.  In summary, a comparison for\nerr !\u003d nil was performed where I intended err \u003d\u003d nil instead.\n"
    },
    {
      "commit": "9e64f6bc81fe02aff17838c08c721e0a6fe9c703",
      "tree": "6df26203a86bac45371407e18759b760f470f7aa",
      "parents": [
        "0167aaa6c2ba91af68fe5c023b94bdd320c60d1f"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 14:26:50 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 14:26:50 2013 -0700"
      },
      "message": "Convert ListImages to use reauth.\n\nThis commit does not work -- acceptance test 08-... is broken.\n"
    },
    {
      "commit": "0167aaa6c2ba91af68fe5c023b94bdd320c60d1f",
      "tree": "8d900b76d60cb48c29430661dee97b2d03d37e9b",
      "parents": [
        "659e14b849e32579d981e64f50d91a84393dfc0e"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 12:36:25 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 12:36:25 2013 -0700"
      },
      "message": "Tie AccessProvider back to service Provider.\n\nTo issue a revokation request, I needed to know the Identity API\nendpoint.  This endpoint exists in the Provider used to create the\nAccessProvider.  This change threads a link back to the Provider.\n"
    },
    {
      "commit": "659e14b849e32579d981e64f50d91a84393dfc0e",
      "tree": "622650ab135fa05f8a44788efa931b86c6f1df83",
      "parents": [
        "2f50b144054ea924f1b548de0211f5cd61085900"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 12:04:54 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 12:04:54 2013 -0700"
      },
      "message": "Add early acceptance test for reauthentication.\n"
    },
    {
      "commit": "2f50b144054ea924f1b548de0211f5cd61085900",
      "tree": "045575dd66c284582fe7337dda6fa8e496c0fc30",
      "parents": [
        "1206f85628a60373f28877cbfe6b73fe0950c7ed"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 11:38:03 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Tue Jul 16 11:38:03 2013 -0700"
      },
      "message": "Simplify WithReauth() and its dependency workflow.\n\nThis change also threads the desired AccessProvider to the reauth\nhandler, so the reauth handler doesn\u0027t have to fish it out through some\nhard to maintain back-channel.\n"
    },
    {
      "commit": "1206f85628a60373f28877cbfe6b73fe0950c7ed",
      "tree": "bfe4e9d1efbc87d47affd379cf302acbe96a441f",
      "parents": [
        "2d0f6da68604dfcda9fa66e29061b41997d23163"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 15 17:56:51 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 15 17:56:51 2013 -0700"
      },
      "message": "Add elementary support for reauth.\n\nPreemptively attempting to reauthenticate before a token expires is\nfraught with dangers.  Everything from buggy API implementations to\nnatural lack of determinism when an API races against a server can cause\nopportunities to reauth to be missed.  The recommended solution is to\njust detect when a 401 Unauthorized error happens, and attempt to handle\nit with a new attempt at reauthentication.\n\nThis commit does not implement the full logic to do this just yet.\nHowever, the groundwork seems to be in place, if my unit tests are any\nindication.  Here\u0027s how I\u0027d _like_ to use it:\n\nLet\u0027s focus on ListServers.  We\u0027d end up rewriting this function like\nso:\n\n// See the CloudServersProvider interface for details.\nfunc (gcp *genericServersProvider) ListServers() ([]Server, error) {\n  var ss []Server\n\n  url :\u003d gcp.endpoint + \"/servers\"\n  errOuter :\u003d gcp.context.WithReauth(func() error {  // NEW CODE\n    errInner :\u003d perigee.Get(url, perigee.Options{\n      CustomClient: gcp.context.httpClient,\n      Results:      \u0026struct{ Servers *[]Server }{\u0026ss},\n      MoreHeaders: map[string]string{\n        \"X-Auth-Token\": gcp.access.AuthToken(),\n      },\n    })\n    return errInner\n  })                                                // NEW CODE\n  return ss, errOuter\n}\n\nNote how small the change to the existing code is: two lines of code.\n\nContext.WithReauth() works by invoking the supplied function,\noptimistically hoping that it\u0027d succeed (e.g., that error is nil).  If\nso, we bee-line the results back to the ListServers implementation,\nwhere it returns its results in ss and a nil value for errOuter.\n\nIf it does fail with an error other than a 401 result, ss is undefined,\nand the error will propegate back out to errOuter, where again it\u0027ll be\nreturned to the caller.\n\nIf the error is a 401 error, however, we invoke the configured\nreauthentication handler for the given context.  This code is\nresponsible for attempting the reauthentication process.  If an error\noccurs in this handler, it too will propegate out to errOuter.\n\nIf everything succeeds up to this point, however, the function defined\nabove is called a second time.  Assuming it succeeds, it will overwrite\nthe desired result (ss in our case) with a valid value, and return a nil\nerror.  This will, as above, produce the desired outcome and all is\nwell.\n\nIf it fails a second time, however, you\u0027re on your own.  Even if the 2nd\nfailure is another 401 result, that error will propegate out to\nerrOuter, where it\u0027ll be returned to the caller.\n\nKnown problems with the code as it stands:\n\n1) Procedure passed to WithReauth() is expected to return an\ninterface{}, being the desired, unmarshalled object from a web request\nagainst an API.  But, I had forgotten that I could use a free variable\n(as I do in the example above) and avoid having to return it explicitly.\nI\u0027ll need to remove this result slot, saving code and complexity.\n\n2) I *may* need to pass an AccessProvider as part of the WithReauth()\ncall, so that the reauth handler has something to work with.  Otherwise,\nI\u0027ll need to define an interface for all xyzProvider entities to recover\nthe AccessProvider it uses.  I\u0027m not entirely sure if this breaks\nencapsulation or not.\n\nOtherwise, the logic is 99.44% finished, and unit tests all pass with\nthis commit.  Acceptance tests aren\u0027t affected, as no production logic\nhas yet been changed to use this mechanism.\n"
    },
    {
      "commit": "2d0f6da68604dfcda9fa66e29061b41997d23163",
      "tree": "e874663e553b91132b133cdfcd8d0c85a93fb113",
      "parents": [
        "54881f86e4392bb0e255ad97ebc6ad5735476998"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 15 16:41:52 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Mon Jul 15 16:41:52 2013 -0700"
      },
      "message": "Ensure authenticate never re-auths.\n\nOther API functions will support re-auth as a matter of course.\nIf an auth token expires, we need to re-authenticate to acquire a new\ntoken.  If re-authentication were itself to attempt re-auth, we\nwould end up in an endless loop.\n\nIf after authenticating gophercloud receives a 401 Unauthorized\nresponse, then we must assume that the provided credentials are\nincorrect.\n"
    },
    {
      "commit": "54881f86e4392bb0e255ad97ebc6ad5735476998",
      "tree": "60053fa06cb3381442138104a98ab7d1915265d0",
      "parents": [
        "962512dac3f310d4fc9869f2adf2d403d435de82",
        "286e4de1c95161c9ec6e756efe7c6f7a3bab2615"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 12 11:35:10 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 12 11:35:10 2013 -0700"
      },
      "message": "Merge pull request #44 from rackspace/delete-server\n\nDelete server"
    },
    {
      "commit": "286e4de1c95161c9ec6e756efe7c6f7a3bab2615",
      "tree": "60053fa06cb3381442138104a98ab7d1915265d0",
      "parents": [
        "e3b2d7a79e372b9be08095a5774cf588c94f6a92"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 12 11:33:31 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 12 11:33:31 2013 -0700"
      },
      "message": "Support delete server.\n"
    },
    {
      "commit": "e3b2d7a79e372b9be08095a5774cf588c94f6a92",
      "tree": "0be78a0d5ed7344c0b81fe6225f76e33af4edf52",
      "parents": [
        "962512dac3f310d4fc9869f2adf2d403d435de82"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 12 11:08:02 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Fri Jul 12 11:08:02 2013 -0700"
      },
      "message": "Fix 04-create-server test to use a common prefix.\n\nWe need servers to dispose of for the 07-delete-server acceptance test.\nCreating a bunch of servers in that test only to turn around and delete\nthem again will be unnecessarily time-consuming.  Instead, we\u0027ll use\nListServers() to discover a set of pre-existing servers to delete.\n04-create-server already creates a batch, and will always execute before\n07-delete-server (since 4 \u003c 7).  Altering 04-create-server to put a tag\nin the name of the servers it creates will allow 07-delete-server to\nfind them and delete them again.\n\nThe only exception is if any intervening tests fail.  You\u0027ll need to\nclean up manually in that case.\n"
    },
    {
      "commit": "962512dac3f310d4fc9869f2adf2d403d435de82",
      "tree": "b1a37db344e24b9c2b2d8c77e5220877a33c2880",
      "parents": [
        "bba5cfd7d14e24e54a73a2d41cf322275f0cf2a9",
        "4b0ba75a9f8c3c4621367741f6ea314cf42bec88"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 12 10:57:54 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Fri Jul 12 10:57:54 2013 -0700"
      },
      "message": "Merge pull request #41 from rackspace/create-server\n\nCreate server"
    },
    {
      "commit": "4b0ba75a9f8c3c4621367741f6ea314cf42bec88",
      "tree": "b1a37db344e24b9c2b2d8c77e5220877a33c2880",
      "parents": [
        "8a8d531a17aee0193c4c91e53a537d6fc8ecd6cb"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:42:26 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:42:26 2013 -0700"
      },
      "message": "Finish acceptance test for CreateServer() function\n\nTwo problems remain -- server status is coming up blank, and\nmeasurements of disk and RAM are coming up zeros.  Not sure why this is.\nIt used to work in Gorax.  More comparative testing between Gorax and\nGophercloud is needed.\n\nHowever, what is in this commit is sufficient to get the acceptance\ntests running again, at least on Rackspace\u0027s infrastructure.  If you\nattempt to run these tests on HP or other infrastructure, they will\nfail for you.\n"
    },
    {
      "commit": "8a8d531a17aee0193c4c91e53a537d6fc8ecd6cb",
      "tree": "b798a7474a58849027fcffe9428779f4dd902865",
      "parents": [
        "bf1fb00d12e60224ebd7119b97c603fd929a03ad",
        "bba5cfd7d14e24e54a73a2d41cf322275f0cf2a9"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:16:22 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:16:22 2013 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into create-server\n"
    },
    {
      "commit": "bba5cfd7d14e24e54a73a2d41cf322275f0cf2a9",
      "tree": "1a044515a836954237633d8e9fc5bb376986d4c3",
      "parents": [
        "7196a10b1f1f433829b9870810c99e84b59e5607",
        "bc3f10fab901e7f63bab900f18277f0791826285"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 11 17:15:24 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 11 17:15:24 2013 -0700"
      },
      "message": "Merge pull request #40 from rackspace/list-flavors\n\nAdd ListFlavors() and acceptance test."
    },
    {
      "commit": "bc3f10fab901e7f63bab900f18277f0791826285",
      "tree": "1a044515a836954237633d8e9fc5bb376986d4c3",
      "parents": [
        "7196a10b1f1f433829b9870810c99e84b59e5607"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:13:24 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:13:24 2013 -0700"
      },
      "message": "Add ListFlavors() and acceptance test.\n\nThis is required to support server creation acceptance testing.  Without\nthe ability to detect flavors automatically, it isn\u0027t possible to\nautomate acceptance testing, as then a human operator would be required\nto manually intervene while testing.\n"
    },
    {
      "commit": "bf1fb00d12e60224ebd7119b97c603fd929a03ad",
      "tree": "28058866d3fe45bc9bdae1243ad09ebf453af55e",
      "parents": [
        "e91ff6df88b445adcb5bb39f9838c652128b745b",
        "7196a10b1f1f433829b9870810c99e84b59e5607"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:04:52 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:04:52 2013 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into create-server\n\nConflicts:\n\tinterfaces.go\n"
    },
    {
      "commit": "7196a10b1f1f433829b9870810c99e84b59e5607",
      "tree": "f1e936e83ebd3c369d2d22c61a574d552a4034b3",
      "parents": [
        "704a750fa2d098d0537ced60a36a8cdc7e4612e2",
        "0a6e45abb78bc2fa05956d13f99608897230d364"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 11 17:02:57 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "kc5tja@arrl.net",
        "time": "Thu Jul 11 17:02:57 2013 -0700"
      },
      "message": "Merge pull request #39 from rackspace/list-images-4\n\nAdd ListImages() support and acceptance test."
    },
    {
      "commit": "0a6e45abb78bc2fa05956d13f99608897230d364",
      "tree": "f1e936e83ebd3c369d2d22c61a574d552a4034b3",
      "parents": [
        "704a750fa2d098d0537ced60a36a8cdc7e4612e2"
      ],
      "author": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:00:41 2013 -0700"
      },
      "committer": {
        "name": "Samuel A. Falvo II",
        "email": "sam.falvo@rackspace.com",
        "time": "Thu Jul 11 17:00:41 2013 -0700"
      },
      "message": "Add ListImages() support and acceptance test.\n\nThis is needed to support a (currently broken) acceptance test for\ncreating a cloud server.  Without the ability to auto-detect an image, a\nhuman operator is required to specify an image manually, which defeats\nthe value of an automated test.\n"
    }
  ],
  "next": "e91ff6df88b445adcb5bb39f9838c652128b745b"
}
