)]}'
{
  "log": [
    {
      "commit": "6e9bee1ae587cccc278dc24ae0d9820a222409fe",
      "tree": "db87e22509c52e7e92ba0b70160219bb0fd4dea9",
      "parents": [
        "188b38fc808d0713476dec30f15d60618acd692b",
        "e82bac04981c8e41a919907d16621c9c952d9224"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Oct 15 02:56:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Oct 15 02:56:19 2015 +0000"
      },
      "message": "Merge \"Detect blank variable in trueorfalse\""
    },
    {
      "commit": "d111182f218094dfdd88bda63af024c0c6e5d8cd",
      "tree": "6efbaec54afc4965767c187b5743c25b8346f438",
      "parents": [
        "5a98d4f7d0a1cf00f2aca9e0f3f6cdc285c1ee79",
        "ada886dd43ccc07f48d3a82d8d3d840fe5096c03"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "message": "Merge \"Don\u0027t mix declaration and set of locals\""
    },
    {
      "commit": "95c33d532f5d69516c0fbe123595f00f00792995",
      "tree": "a0665687ed27e97e010d40acf7ba884980ebb92b",
      "parents": [
        "64be3210e6bae709ee88736f2b7554db6e82f28e"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Oct 07 11:05:59 2015 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Oct 12 23:08:56 2015 +0000"
      },
      "message": "add timing infrastructure to devstack\n\nthis adds a timing infrastructure to devstack to account for time\ntaken up by set of operations. The first instance of this is\naccounting the time taken up by doing apt_get calls.\n\nChange-Id: I855ffe9c7a75e9943106af0f70cf715c34ae25c5\n"
    },
    {
      "commit": "64be3210e6bae709ee88736f2b7554db6e82f28e",
      "tree": "2dfdcda131b89c63963ea144ef1846bcfa1c345f",
      "parents": [
        "0914d04343b60392c5227559dcaa0da39b2d1c64"
      ],
      "author": {
        "name": "Dmitry Tantsur",
        "email": "dtantsur@redhat.com",
        "time": "Mon Oct 12 13:10:24 2015 +0200"
      },
      "committer": {
        "name": "Dmitry Tantsur",
        "email": "dtantsur@redhat.com",
        "time": "Mon Oct 12 13:36:30 2015 +0200"
      },
      "message": "Don\u0027t assume that $i variable won\u0027t be overriden in extras.d plugins\n\nThis causes an incorrect warning about ironic jobs putting an unexpected\nfile in extras.d.\n\nChange-Id: I57acf91fba3fe13b3cc8dd739034e146a0b237c4\n"
    },
    {
      "commit": "c6d470142e0a0359a7322e9b76d61ba15caf95bc",
      "tree": "e2cd8f7b1a192d0bee8e870b22e3369ac6d759ca",
      "parents": [
        "b2b82a0f34d84ecf5329703bf6e63c89272ef2da"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Fri Oct 09 14:57:05 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Fri Oct 09 16:34:32 2015 +0000"
      },
      "message": "Perform additional disable_service checks\n\nWith the advent of plugins and their settings files it has become\npossible to disable_service in local.conf only to have the service\nre-enabled in a plugin settings file. This happens because of\nprocessing order.\n\nTo get around this the disable_service function now aggregates\nservice names into a DISABLED_SERVICES variable which is then checked\nduring enable_service. If something tries to enable something that\nwas previously disabled, a warning is produced in the log and the\nservice is not enabled.\n\nThen after all configuration has been sourced a final check is to\ndone by verify_disabled_services to confirm that something has not\nmanually adjusted ENABLED_SERVICES to overcome a previously called\ndisable_service. If something has, the stack dies with an error.\n\nChange-Id: I0f9403f44ed2fe693a46cd02486bd94043ce6b1a\nCloses-Bug: #1504304\n"
    },
    {
      "commit": "e82bac04981c8e41a919907d16621c9c952d9224",
      "tree": "d94a1380349e0154da2581b80b281b13dad3aaab",
      "parents": [
        "c1561f84fb421d2ce28d3c2b07fd7b53f57264bf"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Aug 25 14:29:08 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Oct 09 19:07:50 2015 +1100"
      },
      "message": "Detect blank variable in trueorfalse\n\nAs a follow-on to I8cefb58f49dcd2cb2def8a5071d0892af520e7f7, put in\nsome detection around missing variable-to-test arguments in\ntrueorfalse.\n\nCorrect a couple of places where we were passing in blank strings,\nresulting in the default always being applied.\n\nAdd test-cases and enhance the documentation a little.\n\nDepends-On: I8cefb58f49dcd2cb2def8a5071d0892af520e7f7\nChange-Id: Icc0eb3808a2b6583828d8c47f0af4181e7e2c75a\n"
    },
    {
      "commit": "e3fe3fd8389cf6b887e1f12ae0c4fe81e2b91ff6",
      "tree": "c1711cb8eaef0111bb4fb04e8654fc7ec5fe224a",
      "parents": [
        "c756b5b5d4665e8e0a3e16acb38f0f4e863d9cb5",
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Oct 08 11:45:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Oct 08 11:45:17 2015 +0000"
      },
      "message": "Merge \"Don\u0027t set xtrace directly in local call\""
    },
    {
      "commit": "d111c2174e2f6c19975448f0271aa0c51e714624",
      "tree": "87d6b50eccd83011a2d7678d62c46d51988d0dae",
      "parents": [
        "ca9f00874af6323a2ad6d5f113873d37a747a1ac",
        "1de9e330de9fd509fcdbe04c4722951b3acf199c"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Oct 08 05:42:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Oct 08 05:42:48 2015 +0000"
      },
      "message": "Merge \"add big warning for extras.d usage\""
    },
    {
      "commit": "17491f37d7163c069fe1cca46ae5d272c288d47a",
      "tree": "717470c49a29025d0180b2d565ff707d863c108b",
      "parents": [
        "0989cf9512ae827413bc13ba0856125b1bdac375",
        "050a0d5b304a013e23cd5909abf6e11b7dda5f18"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 07 19:30:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 07 19:30:18 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Convert identity defaults to keystone v3 api\"\"\""
    },
    {
      "commit": "1de9e330de9fd509fcdbe04c4722951b3acf199c",
      "tree": "a2df114497927184dab66e623ce259258a6d3422",
      "parents": [
        "1e7be9f9eae83306ed2b4ad43d8532a2a010c50c"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Oct 07 08:46:13 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Oct 07 15:15:16 2015 -0400"
      },
      "message": "add big warning for extras.d usage\n\nThis adds a warning for extras.d usage. This will give us something to\nkeep an eye on in logstash to build up the list of projects that will\nbreak at Mitaka-1.\n\nThis also makes the deprecated handling done through a function, which\nwill hopefully make it more consistent in the future.\n\nChange-Id: Icd393bc3e7095fe58be0fd13ef74fece3aa5c5f1\n"
    },
    {
      "commit": "ada886dd43ccc07f48d3a82d8d3d840fe5096c03",
      "tree": "93d62f1c82edc08d813b7f9f7eb9270e7024e055",
      "parents": [
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 14:06:26 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 17:03:32 2015 +1100"
      },
      "message": "Don\u0027t mix declaration and set of locals\n\nIa0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate\nfind instances of setting a local value.  The issue is that \"local\"\nalways returns 0, thus hiding any failure in the commands running to\nset the variable.\n\nThis is an automated replacement of such instances\n\nDepends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81\nChange-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe\n"
    },
    {
      "commit": "433a9b10ddd6fa67d7459c4943a92ce4f488cebc",
      "tree": "4db530838dadc2fc4e1e4ae4d37c6213f747919c",
      "parents": [
        "561137e88a513f1c1e1cc9f08b7d3bd909702282"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 13:29:31 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 16:54:29 2015 +1100"
      },
      "message": "Don\u0027t set xtrace directly in local call\n\nIa0957b47187c3dcadd46154b17022c4213781112 detects setting local\nvariables with subshell commands.\n\nAlthough this is a particuarly benign case, it trips the test.  Rather\nthan putting in an ignore for this, we can easily change it to make\nthe test pass.  This seems better than putting in special work-arounds\nto bashate, etc.\n\nChange-Id: I37c3967c0f2d780a636a7d26cda83755085c5c69\n"
    },
    {
      "commit": "ce7246a34ba51a5ccff0ac08d6e85a8cda7d275b",
      "tree": "b6f4bc2aa2337691750b50638de663955d709542",
      "parents": [
        "f4485bae9c719ee6b0c243cf5a69a6461df0bf23"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Thu Apr 23 09:41:06 2015 -0700"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Oct 02 06:27:43 2015 -0400"
      },
      "message": "Workaround potential failure to shutdown services\n\nKill them twice to make sure they\u0027re good\u0027n\u0027dead. There is a supposed\nfix to oslo-incubator code, but we\u0027re working around that here in the\nmeantime with this change.\n\nThis returned in Liberty.\n\nChange-Id: I02a7af995dc7de857c4efcf2cef2f95d357c007a\nRelated-Bug: #1446583\n(cherry picked from commit 953baa7998f253681ed31013fd18bd8aa8098b34)\n"
    },
    {
      "commit": "050a0d5b304a013e23cd5909abf6e11b7dda5f18",
      "tree": "5d3dcb78f29469d8fee79ca9d235398326fd5f14",
      "parents": [
        "d2999d0d0cc4d283873ff0d0951c4fdacd234dd1"
      ],
      "author": {
        "name": "Steve Martinelli",
        "email": "stevemar@ca.ibm.com",
        "time": "Sun Sep 06 22:03:54 2015 +0000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Tue Sep 29 19:52:28 2015 +0000"
      },
      "message": "Revert \"Revert \"Convert identity defaults to keystone v3 api\"\"\n\nThis reverts commit f768787bdd6dddf2790f83a884618d29677ca77c.\nAnd sets OS_AUTH_VERSION so swift CLI doesn\u0027t fall flat when\nnot using v2 keystone\n\nChange-Id: If44a7e0d85e48020a3c90d8c5c027513129f0f3b\n"
    },
    {
      "commit": "f5255eb1c7fedf7086ac619cc281850f54ca9973",
      "tree": "747d95a4434bc1cd8b0675d65098c7ad4f5cd72b",
      "parents": [
        "0cb86e15f2bd22c0efe427dc759ac164fb1eb032",
        "ebe63d826b7909b992bff988b3eac65e7b6bfa88"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Sep 28 21:06:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Sep 28 21:06:08 2015 +0000"
      },
      "message": "Merge \"Improve ERROR_ON_CLONE message\""
    },
    {
      "commit": "dae0e463b812b4e86b0ad98d08e8dee74ef09275",
      "tree": "2e9e07de7221555d0f33c37ccc7fb13d993e3e07",
      "parents": [
        "1de69ff47d3bebc83864642029e17cbb0717eae9",
        "50821bed081e94dfd4b75cf02121a42a56cdbaac"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Sep 28 21:05:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Sep 28 21:05:58 2015 +0000"
      },
      "message": "Merge \"Fix return value of get_or_add_user_project_role\""
    },
    {
      "commit": "f845b22a459b4bf88f54ebc8c569ef217cd76738",
      "tree": "f19d0233dc6e719d3402f9ee85c4486a3f013420",
      "parents": [
        "983c07c297e51a86b44c226491e62b3abfeefb5d",
        "e9a4750fe1b111eeb457378c26ca9eea1b5e0085"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Sep 28 17:49:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Sep 28 17:49:32 2015 +0000"
      },
      "message": "Merge \"Remove ceilometer in favor of plugin\""
    },
    {
      "commit": "ebe63d826b7909b992bff988b3eac65e7b6bfa88",
      "tree": "867ff436935df6e6ee4fe970f78fb26f5084debf",
      "parents": [
        "b6249dc2ad630ecb9a231d0ce65d0f14f2116598"
      ],
      "author": {
        "name": "James E. Blair",
        "email": "jeblair@linux.vnet.ibm.com",
        "time": "Thu Sep 24 07:43:50 2015 -0700"
      },
      "committer": {
        "name": "James E. Blair",
        "email": "jeblair@linux.vnet.ibm.com",
        "time": "Thu Sep 24 09:26:01 2015 -0700"
      },
      "message": "Improve ERROR_ON_CLONE message\n\nIn case ERROR_ON_CLONE is true and triggers a failure for a missing\nproject, suggest a remedial action.  On their own, people have\ncome up with remedies that include altering the value of ERROR_ON_CLONE\nwhich rather defeats the purpose.\n\nChange-Id: I28d7f2c184f8440b774fefaa8ec7002d6708db95\n"
    },
    {
      "commit": "50821bed081e94dfd4b75cf02121a42a56cdbaac",
      "tree": "a17675bf20289b9c0f9f63072f65fc2a68df2137",
      "parents": [
        "c4c08686f81384c90386228a45583667d877b6ef"
      ],
      "author": {
        "name": "Roxana Gherle",
        "email": "roxana.gherle@hp.com",
        "time": "Tue Sep 22 10:52:46 2015 -0700"
      },
      "committer": {
        "name": "Roxana Gherle",
        "email": "roxana.gherle@hp.com",
        "time": "Tue Sep 22 11:11:36 2015 -0700"
      },
      "message": "Fix return value of get_or_add_user_project_role\n\nget_or_add_user_project_role function was always returning an\nempty user_role_id because the role assignment command does not\nreturn any output. Added a command to get the user_role_id after\nthe assignment happens.\n\nCloses-Bug: #1498599\nChange-Id: If1b77eef0d4f0ebdcdf761ecb5e2011484f73871\n"
    },
    {
      "commit": "debd216a7338e4023f5ea38506dae7882379f6d6",
      "tree": "06e24964962553d5f1d358d74f189cc6b1fb1dac",
      "parents": [
        "fa88c8913458a9e9c7bb6560dc82cb0a9d1b0e90",
        "3db0aad63c182a88830ec61fc048240058c02d85"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Sep 22 13:03:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Sep 22 13:03:54 2015 +0000"
      },
      "message": "Merge \"Fix is_service_enabled when using multiple arguments\""
    },
    {
      "commit": "c64b16ce7fded4cd80d399d096f7e3e219228acb",
      "tree": "f5cfb1b48e1f1c40ee5cae731e1c34538d5e45ce",
      "parents": [
        "0ddd92a235fd97b91b53b815dc3489e40aa60052",
        "e3340f1fe6a79166e50dc2a89e7a74fa038e9014"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Sep 22 07:18:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Sep 22 07:18:01 2015 +0000"
      },
      "message": "Merge \"Fix typo: falure \u003d\u003e failure\""
    },
    {
      "commit": "7224eecb98883a91e9da445baefc23a194e8fd68",
      "tree": "e6e3155ced9985e6fbec9ada076626fdf6ff8965",
      "parents": [
        "16a2d64f379974e7c88ef9f7879c88511e43c2eb"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sat Sep 19 11:26:18 2015 -0400"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Mon Sep 21 15:45:23 2015 -0500"
      },
      "message": "Extract writing clouds.yaml to function\n\nIt\u0027s a bit wordy to be directly in stack.sh and not in a function.\n\nChange-Id: Ibddfd8018d861191f1b1dc3270e0e81c274733cd\n"
    },
    {
      "commit": "e3340f1fe6a79166e50dc2a89e7a74fa038e9014",
      "tree": "03424366073f1078cf183b523fe2870d4e5e63bd",
      "parents": [
        "be65c6f88d5922e356178a2958afa9ae452fb85e"
      ],
      "author": {
        "name": "Wei Jiangang",
        "email": "weijg.fnst@cn.fujitsu.com",
        "time": "Mon Sep 21 17:52:14 2015 +0800"
      },
      "committer": {
        "name": "Wei Jiangang",
        "email": "weijg.fnst@cn.fujitsu.com",
        "time": "Mon Sep 21 17:53:08 2015 +0800"
      },
      "message": "Fix typo: falure \u003d\u003e failure\n\nChange-Id: Ic1a53eec71d5e20194505aa8655a99b2fedd7632\n"
    },
    {
      "commit": "3db0aad63c182a88830ec61fc048240058c02d85",
      "tree": "aa520b3ce8845a7f3f328ebe09228b6661c87ebe",
      "parents": [
        "f25c9ec3662ace97639b03bbbf3943e981793c11"
      ],
      "author": {
        "name": "Christian Schwede",
        "email": "cschwede@redhat.com",
        "time": "Thu Sep 10 11:15:39 2015 +0000"
      },
      "committer": {
        "name": "Christian Schwede",
        "email": "cschwede@redhat.com",
        "time": "Thu Sep 10 11:31:55 2015 +0000"
      },
      "message": "Fix is_service_enabled when using multiple arguments\n\nis_service_enabled might actually fail to return the expected result if\nthere is a is_${service}_enabled function available and multiple\nservices are checked.\n\nFor example, if one defines swift as a service but disables glance, the\nfollowing check fails:\n\n if is_service_enabled swift glance horizon; then\n     install_swiftclient\n fi\n\nThis is because the second for-iteration resets the local \"enabled\" var\nagain to 1 and finally exits with 1 as a return code.\n\nThis patch fixes this.\n\nChange-Id: Ic76b72897efe9597d1412470353895001a1a4c66\n"
    },
    {
      "commit": "e9a4750fe1b111eeb457378c26ca9eea1b5e0085",
      "tree": "d7ef7ebdc7c61f9c2e70516858b57be1b8f30828",
      "parents": [
        "633e740dcfb0a8a107880a6fc6b9aeff8ee43b11"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Sat Jun 27 11:29:09 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Wed Sep 09 16:44:29 2015 +0000"
      },
      "message": "Remove ceilometer in favor of plugin\n\nThe ceilometer project is moving to using a devstack plugin rather\nthan having ceilometer in the base devstack. This is to allow\ngreater control and flexibility.\n\nChange-Id: I413ab159474b7d7231ad66d3a482201f74efe8a8\n"
    },
    {
      "commit": "f768787bdd6dddf2790f83a884618d29677ca77c",
      "tree": "446cdfc69c372b710996abd20752060417c22ba0",
      "parents": [
        "d21a29cb9ebb3c3ce2fa31d0b5b6ff19d57e9652"
      ],
      "author": {
        "name": "Lucas Alvares Gomes",
        "email": "lucasagomes@gmail.com",
        "time": "Fri Sep 04 15:34:06 2015 +0100"
      },
      "committer": {
        "name": "Lucas Alvares Gomes",
        "email": "lucasagomes@gmail.com",
        "time": "Fri Sep 04 15:35:01 2015 +0100"
      },
      "message": "Revert \"Convert identity defaults to keystone v3 api\"\n\nThis change have broke the Ironic tests. Reverting to unblock the Ironic\ngate.\n\nThis reverts commit 4b115ad526df7e12bbdc71e0280b3c691e53ed04.\n\nCloses-Bug: #1492216\nChange-Id: I03acfdf47caf435cede1df08fd79b288a6662435\n"
    },
    {
      "commit": "7594b100128bdd4f6397dacf8de4d4c3059f6bb3",
      "tree": "0ed6cf2aa925a4120e2b594da3249af5fbb75612",
      "parents": [
        "1d0b0d363e23896e72d9c66028d59c6046eb6046",
        "4b115ad526df7e12bbdc71e0280b3c691e53ed04"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Sep 03 22:24:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Sep 03 22:24:40 2015 +0000"
      },
      "message": "Merge \"Convert identity defaults to keystone v3 api\""
    },
    {
      "commit": "d20435bdd4fb5ea856497c797376517ed516d833",
      "tree": "61a605f69c0c0abc6e91747e40e7ff98baa2dce7",
      "parents": [
        "ca802bcfcc1d45697da9f4c26683d2887eb63f39"
      ],
      "author": {
        "name": "Sean M. Collins",
        "email": "sean@coreitpro.com",
        "time": "Tue Aug 25 19:24:51 2015 -0400"
      },
      "committer": {
        "name": "Sean M. Collins",
        "email": "sean@coreitpro.com",
        "time": "Tue Aug 25 19:24:51 2015 -0400"
      },
      "message": "Filter out temporary addresses\n\nSome IPv6 addresses are temporary and are generated by IPv6 privacy\nextensions. They eventually expire and are regenerated, so we should\nfilter them out.\n\nChange-Id: I916d6a335bab096f765ae8c7e0e540a4349dd15f\nCloses-Bug: #1488691\n"
    },
    {
      "commit": "987dc6453e8e3a8a46d748059378564c42bafc5c",
      "tree": "419f9579903c924b3ea61e4315468bbc50ec4e5d",
      "parents": [
        "92d996bf3a6a21a178d1ae4b3d29bcf84bc0d146",
        "05aa3846a0402edc9cc49f4ba36f09592004b273"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Aug 18 23:07:53 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Aug 18 23:07:53 2015 +0000"
      },
      "message": "Merge \"Just use constraints everywhere\""
    },
    {
      "commit": "05aa3846a0402edc9cc49f4ba36f09592004b273",
      "tree": "2ec4bb8ed899b1a9a89736d79b057a0bad9cb2e4",
      "parents": [
        "57aafb5a9ad20e19e2c248a8e853a32d5b719c03"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Aug 03 11:14:13 2015 -0700"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Aug 18 09:39:04 2015 -0700"
      },
      "message": "Just use constraints everywhere\n\nHaving behavior on your laptop diverge from behavior in the gate is\nconfusing. Just use constraints on every devstack run to be consistent.\nUsers of devstack can edit the requirements repo in order to change\nthese constraints locally if necessary.\n\nChange-Id: I843208e2e982eb04931b76f5cb4bd219fbcd70de\n"
    },
    {
      "commit": "4d223251e8b12a1118d8f089615e091be1a90883",
      "tree": "9f42ea03b77f707c5633066156a666ba9be471e7",
      "parents": [
        "d103f47ffac9282a3abae535e50077c5755e0079",
        "4ffb4541452a95ae964c562c89e31c49e39dbaa7"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Aug 17 19:38:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Aug 17 19:38:05 2015 +0000"
      },
      "message": "Merge \"Add header guard to functions/functions-common\""
    },
    {
      "commit": "4b115ad526df7e12bbdc71e0280b3c691e53ed04",
      "tree": "096a16d3c09880b0783674c5af649a80c95e188d",
      "parents": [
        "b1ea5eacbc173a0acc162dc486d17154d509a430"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Fri May 29 08:36:40 2015 +0000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Sat Aug 15 05:03:41 2015 +0000"
      },
      "message": "Convert identity defaults to keystone v3 api\n\nAt this point all our function calls should be using the V3 APIs anyway\nso switch the authentication credentials to v3 compatible ones and\nremove all the hacks we added to force v3 API calls.\n\nImplements: bp keystonev3\nChange-Id: If92d3e11b9a363454f77527783b6d25f4da9c249\n"
    },
    {
      "commit": "1991e7599313cdbc75cf7674df94f32e9443cc60",
      "tree": "3af71b83f26d1005bfcb68a801f14f929aebc712",
      "parents": [
        "2f605b0f4da2493d004b0893a850792ef20e13ec"
      ],
      "author": {
        "name": "Daniel Gonzalez",
        "email": "daniel@gonzalez-nothnagel.de",
        "time": "Tue Aug 11 19:34:22 2015 +0200"
      },
      "committer": {
        "name": "Daniel Gonzalez",
        "email": "daniel@gonzalez-nothnagel.de",
        "time": "Thu Aug 13 02:25:56 2015 +0200"
      },
      "message": "Fix creation of endpoints in multi-region\n\nKeystone API v3 does currently not support filtering for region names.\nAs a consequence an additional check is needed in get_or_create_endpoint\nto check if an endpoint must be created for a given region or if it\nalready exists.\nSee related bug for more information regarding the missing region\nfiltering in keystone.\n\nCloses-Bug: #1483784\nRelated-Bug: #1482772\nChange-Id: Ia6a497b9fb58f7474636ab52dc01b99857bed3a2\n"
    },
    {
      "commit": "9cdde34319feffc7f1e27a4ffea43eae40eb6536",
      "tree": "d613354ebaa6199971786cfe81e53d560fdc89b0",
      "parents": [
        "b5c37243886a2289b0a98a3ec0d2344eb326b59e",
        "11d276c73cdd848c0287f6718d0163369cefd157"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jul 22 23:36:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jul 22 23:36:02 2015 +0000"
      },
      "message": "Merge \"local call masks errors in subshells\""
    },
    {
      "commit": "d9b425df06b6d556c8a38a213bb240957d565177",
      "tree": "27f3cb0905c9ed85007f6a91273d5bebc553aadd",
      "parents": [
        "56f4c3c8197bdeaa23f56f370acee078c0dfdf0a",
        "e6f37b91e5cd5b0f70d2be1e75eb4f61adc1e16a"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jul 21 04:58:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jul 21 04:58:31 2015 +0000"
      },
      "message": "Merge \"libvirt virt_type\u003dparallels support enchancement\""
    },
    {
      "commit": "11d276c73cdd848c0287f6718d0163369cefd157",
      "tree": "9ebb8fb33d5b1e2ca858a946593d194f3b4f2bd9",
      "parents": [
        "32a3e322b428d83fa5922c1b9e6adce047064bd6"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jul 02 09:34:34 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jul 16 13:44:47 2015 +1000"
      },
      "message": "local call masks errors in subshells\n\nIn another \"things from the man page\"\n\n   The return status is 0 unless local is used outside a function, an\n   invalid name is supplied, or name is a readonly variable.\n\nThus if anything fails in \"cmd\" of \"local foo\u003d$( cmd )\" we don\u0027t\nnotice.\n\nChange-Id: I22b10d5d39f014b6c92d2e101b167cbacf81afca\n"
    },
    {
      "commit": "e6f37b91e5cd5b0f70d2be1e75eb4f61adc1e16a",
      "tree": "cfe5bff2c6ed711a16d7c412f3c161003f2284dc",
      "parents": [
        "98b652419a896ffb6fca5ecf4cd6cf07eb0d1c47"
      ],
      "author": {
        "name": "Maxim Nestratov",
        "email": "mnestratov@virtuozzo.com",
        "time": "Tue Jun 30 14:54:12 2015 +0300"
      },
      "committer": {
        "name": "Maxim Nestratov",
        "email": "mnestratov@virtuozzo.com",
        "time": "Wed Jul 15 11:59:53 2015 +0300"
      },
      "message": "libvirt virt_type\u003dparallels support enchancement\n\nAs soon as Parallels Cloud Server/Virtuozzo is based on CloudLinux distribution\nthis new rpm kind of distribution is introduced.\nAlso we setup vnc and set vnc_encoding parameter to None as soon it isn\u0027t\nsupported by parallels.\n\nChange-Id: Ib97a09f397f950227498cfc2ce162d19b700f6f4\n"
    },
    {
      "commit": "a13e08707dc6c47727f7c7d6f02ec37f822baed9",
      "tree": "691f50216f60c7f6c791f65097d2bced95f6d3ff",
      "parents": [
        "07387ebdd52d7687c812430a244a9f42fd71d495",
        "72ce6acd22a553e4d34f0ffdc429aaaed7ed1212"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jul 15 05:35:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jul 15 05:35:26 2015 +0000"
      },
      "message": "Merge \"Use Keystone V3 API for role creation\""
    },
    {
      "commit": "aaae79b095fb4d4029077ed490adc61bf9e1eb46",
      "tree": "a76931c3ff60d7bf6a8d57dca7b2fdbfa3fb239e",
      "parents": [
        "a3c94468baa159840a47c34cf94d97d816208313",
        "b17ad7560d7d67e3464b489e124c540e025b9299"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jul 14 04:53:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jul 14 04:53:34 2015 +0000"
      },
      "message": "Merge \"Use identity V3 API for endpoint creation\""
    },
    {
      "commit": "71828f756fe3fd28ed9db1ba0812d932a079d782",
      "tree": "e87486ba516bd747a760b37c7745e0d466989b29",
      "parents": [
        "ac3d3f336caa4264022f18cae1dd2921f342fb2c",
        "5d04db20ec5a89c6f04df7c798efa41a4259d22e"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jul 08 12:49:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jul 08 12:49:41 2015 +0000"
      },
      "message": "Merge \"Add IPv6 support to openrc files\""
    },
    {
      "commit": "ac3d3f336caa4264022f18cae1dd2921f342fb2c",
      "tree": "20d22053aa8641ee655c852a12018f0b7ee98cc3",
      "parents": [
        "7eaaba4844a892c260a41dd32790ca23a2d25c0a",
        "180f5eb652c73463cd5ae7d0dbede6d9d31a5df5"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jul 08 12:44:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jul 08 12:44:51 2015 +0000"
      },
      "message": "Merge \"Add IPv6 support to devstack infrastructure\""
    },
    {
      "commit": "72ce6acd22a553e4d34f0ffdc429aaaed7ed1212",
      "tree": "14f6851b6b661f50b80763bacbfdaaf6f142b941",
      "parents": [
        "b17ad7560d7d67e3464b489e124c540e025b9299"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Thu Jul 02 09:19:01 2015 +1000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Wed Jul 08 05:17:00 2015 +1000"
      },
      "message": "Use Keystone V3 API for role creation\n\nAlways use the V3 API for role creation.\n\nGroups only exist in the v3 identity API and so we must specify\n--os-identity-api-version in these commands.\n\nImplements: bp keystonev3\nCloses-Bug: #1470668\nChange-Id: I5e01d23ebcb5a0c7de56233071a4eb9b16d3b813\n"
    },
    {
      "commit": "b17ad7560d7d67e3464b489e124c540e025b9299",
      "tree": "4af18b24b59bded064806f15b0f2c8b69e7d9183",
      "parents": [
        "68f9172dbd18688db188454c775dbf139224aeca"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Fri May 29 06:04:47 2015 +0000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Wed Jul 08 05:17:00 2015 +1000"
      },
      "message": "Use identity V3 API for endpoint creation\n\nAlways use the keystone V3 API when creating services and endpoints. The syntax\nhere is slightly different but we maintain the function interface.\n\nChange-Id: Ib3a375918a45fd6e37d873a1a5c0c4b26bdbb5d8\nImplements: bp keystonev3\n"
    },
    {
      "commit": "aedb8b97f60e7ff5bf5d0bafc192cc6e3e289cbe",
      "tree": "4c1820fdbe2ccad4d40e4431e226c9077427159f",
      "parents": [
        "52844a11dddb7e0631f9d11eb74251b17e05beb5"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Thu Jul 02 17:39:07 2015 +1000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Fri Jul 03 09:36:02 2015 +1000"
      },
      "message": "Search for service by type\n\nWhen you get or create service it first checks to see if an existing\nservice matching these parameters exists. The definition of existing is\nhaving a service with the same name, however name is not a unique field.\nSahara for example creates two services, one with data-processing, one\nwith data_processing with the same sahara name.\n\nSearch for existing services by service type, not by service name.\n\nChange-Id: I6148e2254aa3968039b0e7c178e7cabc53b6be68\n"
    },
    {
      "commit": "5d04db20ec5a89c6f04df7c798efa41a4259d22e",
      "tree": "95f6115eaf7cf8e39b0150c8f4a5eec3c4908068",
      "parents": [
        "180f5eb652c73463cd5ae7d0dbede6d9d31a5df5"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Tue Jun 16 13:14:31 2015 -0400"
      },
      "committer": {
        "name": "Jeremy Alvis",
        "email": "jeremy.alvis@hp.com",
        "time": "Thu Jul 02 21:18:16 2015 +0000"
      },
      "message": "Add IPv6 support to openrc files\n\nAssumes devstack was configured with SERVICE_IP_VERSION in\nlocal.conf\n\nSERVICE_IP_VERSION is stored in .stackenv and checked in\nopenrc. If SERVICE_IP_VERSION is set to 6, openrc will use\nIPv6.\n\nNOTE: At first, I added a \u0027-6\u0027 option to the openrc call\nwhich would set the HOSTS accordingly. I then simplified\nthe code by saving SERVICE_IP_VERSION to the .stackenv file\nwhich is sourced by openrc. After that, I simplified the\ncode even more by removing an extra, unnecessary, variable.\n\nChange-Id: I5d46d5438d3e56fea788720ca17f0010caef3df1\n"
    },
    {
      "commit": "180f5eb652c73463cd5ae7d0dbede6d9d31a5df5",
      "tree": "7170199543e18d917777de98c56723731fe6c424",
      "parents": [
        "52844a11dddb7e0631f9d11eb74251b17e05beb5"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "brian.haley@hp.com",
        "time": "Tue Jun 16 13:14:31 2015 -0400"
      },
      "committer": {
        "name": "Jeremy Alvis",
        "email": "jeremy.alvis@hp.com",
        "time": "Thu Jul 02 15:16:34 2015 -0600"
      },
      "message": "Add IPv6 support to devstack infrastructure\n\nBy default, most Openstack services are bound to 0.0.0.0\nand service endpoints are registered as IPv4 addresses.\nWith this change we introduce two new variables to control\nthis behavior:\n\nSERVICE_IP_VERSION - can either be \"4\" or \"6\".\n\nWhen set to \"4\" (default if not set) devstack will operate\nas today - most services will open listen sockets on 0.0.0.0\nand service endpoints will be registered using HOST_IP as the\naddress.\n\nWhen set to \"6\" devstack services will open listen sockets on ::\nand service endpoints will be registered using HOST_IPV6 as the\naddress.\n\nThere is no support for \"4+6\", more work is required for that.\n\nHOST_IPV6 - if SERVICE_IP_VERSION\u003d6 this must be an IPv6\naddress configured on the system.\n\nSome existing services, like the Openvswitch agent, will continue\nto use IPv4 addresses for things like tunnel endpoints.  This is\na current restriction in the code and can be updated at a later\ntime.  This change is just a first step to supporting IPv6-only\ncontrol and data planes in devstack.\n\nThis change is also partly based on two previous patches,\nhttps://review.openstack.org/#/c/140519/ and\nhttps://review.openstack.org/#/c/176898/\n\nChange-Id: I5c0b775490ce54ab104fd5e89b20fb700212ae74\nCo-Authored-By: Sean Collins \u003csean@coreitpro.com\u003e\nCo-Authored-By: Baodong Li \u003cbaoli@cisco.com\u003e\nCo-Authored-By: Sridhar Gaddam \u003csridhar.gaddam@enovance.com\u003e\nCo-Authored-By: Adam Kacmarsky \u003cadam.kacmarsky@hp.com\u003e\nCo-Authored-By: Jeremy Alvis \u003cjeremy.alvis@hp.com\u003e\n"
    },
    {
      "commit": "52844a11dddb7e0631f9d11eb74251b17e05beb5",
      "tree": "fbebe33ed156559d0d4e43bbe21327836e66a6e8",
      "parents": [
        "7a0f6833ad75a61ddf60a1b34e8d7f080d29259e",
        "f750a6fedbb34399e1ee4dd540c13028d53c0e13"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jul 02 20:13:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jul 02 20:13:06 2015 +0000"
      },
      "message": "Merge \"Already dead process tolerance in unstack.sh\""
    },
    {
      "commit": "7a0f6833ad75a61ddf60a1b34e8d7f080d29259e",
      "tree": "2b81090e9a9c1e4c92cfe565a1be2463d3d4787c",
      "parents": [
        "fee742ba723bfb843a58881cb415b4e7991981c1",
        "37eca48970106abb9b982af4f1262bcb227411ea"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jul 02 20:09:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jul 02 20:09:05 2015 +0000"
      },
      "message": "Merge \"remove non RabbitMQ messaging\""
    },
    {
      "commit": "f750a6fedbb34399e1ee4dd540c13028d53c0e13",
      "tree": "839fca32e62cc71af1cb47d21c0ed4c91fcd7aad",
      "parents": [
        "85a1c488dfda0094238f899ea0bf693106021ce5"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Wed Jul 01 12:17:35 2015 +0200"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Wed Jul 01 12:17:35 2015 +0200"
      },
      "message": "Already dead process tolerance in unstack.sh\n\nThe gate/updown.sh calls the unstack.sh with\n-ex option. Normally we do not use -e with unstack.sh.\n\nThe unstack.sh can fail if the service already stopped,\nand it also can have flaky failures on the gate.\n\nFor example the stop_swift function tries to kill swift in two\ndifferent ways, and if the first one succeeds before the 2th attempt\nthe pkill fails the whole unstack.sh.\n\nThis change accepts kill failure.\nNormally the kill can fail if the process does not exits,\nor when you do not have permission to the kill operation.\n\nSince the permission issue is very unlikely in our case,\nthis change does not tries to distinguish the two operation.\n\nThe behavior of the unstack.sh wen you are not using -ex should\nnot be changed by this change.\n\nChange-Id: I64bf3cbe1b60c96f5b271dcfb620c3d4b50de26b\n"
    },
    {
      "commit": "7bc1f3c15fbf92da5fe9e15bf66a2d6b6648e449",
      "tree": "3f5fffe78d0a4c531d040a6ec0dcff0f542ec880",
      "parents": [
        "474172490f66588291e8c80f1ff4e94a41a16d42",
        "9d7e776b704d0fa54b2bf6543d054ab0118f5806"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jun 30 17:15:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jun 30 17:15:58 2015 +0000"
      },
      "message": "Merge \"Use Keystone v3 API for user creation\""
    },
    {
      "commit": "474172490f66588291e8c80f1ff4e94a41a16d42",
      "tree": "979a84e6ceeebac902c2c756f3afc289c97f9fb6",
      "parents": [
        "3a2fdb04ef7b0f2eae2c1139feb2d400c58d0ed6",
        "b632c9ef81090e210fee27346c6e1f2b4f3bedec"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jun 30 17:15:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jun 30 17:15:54 2015 +0000"
      },
      "message": "Merge \"Use keystone v3 API for projects\""
    },
    {
      "commit": "d014727c45db414b6e863f77916e7663ba5b425f",
      "tree": "93fbd8434734cd4f2879bcaa1ed2ffed728ac5bf",
      "parents": [
        "e439dbe9d454558726d0013becb957027ae98621",
        "f2a05497a3716b5eaa178b970d5cd2e6db865a97"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jun 30 16:55:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jun 30 16:55:31 2015 +0000"
      },
      "message": "Merge \"Drop no longer needed and broken check for cinder in is_service_enabled\""
    },
    {
      "commit": "4ffb4541452a95ae964c562c89e31c49e39dbaa7",
      "tree": "eec7961348f5512ea3b610e864a03d3d7d1ce02c",
      "parents": [
        "04c0f0be2643ef95380a7dcf4b510d86ff11cd58"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Jun 30 11:00:32 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Jun 30 13:48:53 2015 +1000"
      },
      "message": "Add header guard to functions/functions-common\n\nTo avoid sourcing this twice and getting globals mixed up,\nparticularly when using multiple plugins, add a \"header guard\" that\nensures we only source it once.\n\nIn general I don\u0027t think functions/functions-common have been written\nor considered to be idempotent.  I don\u0027t think going down that path is\ngoing to be a long-term solution as it\u0027s easy to break.\n\nChange-Id: Idca49eb996d2b7ff3779ec27ed672a2da7852590\nCloses-Bug: #1469178\n"
    },
    {
      "commit": "f2a05497a3716b5eaa178b970d5cd2e6db865a97",
      "tree": "a00ec35b53c13dab18ffb8efda67dd94c8c0e96f",
      "parents": [
        "c782781a4ca5fc2671a6e5d188f68e99e7a656f4"
      ],
      "author": {
        "name": "Dmitry Tantsur",
        "email": "dtantsur@redhat.com",
        "time": "Fri Jun 26 15:20:54 2015 +0200"
      },
      "committer": {
        "name": "Dmitry Tantsur",
        "email": "dtantsur@redhat.com",
        "time": "Fri Jun 26 15:22:01 2015 +0200"
      },
      "message": "Drop no longer needed and broken check for cinder in is_service_enabled\n\nThere is properly working is_cinder_enabled now, and this check\nactualy matches ironic-inspector, breaking its devstack plugin.\n\nChange-Id: I659ec9b9b2b49690fd075f9766ae8cbf19e81848\nCloses-Bug: #1469160\n"
    },
    {
      "commit": "442e4e962559479fa0000ad64e6fa34da2c141c8",
      "tree": "abf23671f95d2e0931100e25706da8146d7d0287",
      "parents": [
        "c4067a3cc033eec0d6fa589718e35257c6bcae97"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 13:24:02 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 13:24:02 2015 -0400"
      },
      "message": "make test_with_retry a function\n\nWe have this pattern of timeout with while tests for a non infinite\nwhile loop condition. It\u0027s enough of a pattern that we should probably\nextract it into a function to make it more widely used.\n\nChange-Id: I11afcda9fac9709acf2f52d256d6e97644d4727c\n"
    },
    {
      "commit": "ee12f5f8863b02ae669faa2a42187dd8a1ba82ef",
      "tree": "a0a95bc7858ab9b8e221c6cd576c0e57ec6e2dce",
      "parents": [
        "0ad0bf4effdfd94f0fcc44c146a4fcfbca29b4b7",
        "6816234dc84b3e81a3de8745e84691d09123ba7f"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Jun 19 05:29:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Jun 19 05:29:39 2015 +0000"
      },
      "message": "Merge \"Save stackenv values more often\""
    },
    {
      "commit": "37eca48970106abb9b982af4f1262bcb227411ea",
      "tree": "fd0176e046c722d071a21007d260f518cccf8390",
      "parents": [
        "97c77b90e2064647b9968dd74fb378c584ece61f"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jun 16 07:19:22 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jun 16 08:28:52 2015 -0400"
      },
      "message": "remove non RabbitMQ messaging\n\nPart of what was decided at summit is devstack needs to return to a\nmore opinionated stance, the following removes support for non\nRabbitMQ messaging. RabbitMQ is used by over 95% of our community\n(statistically all of it), so it\u0027s a pretty clear line to draw that\nthis shouldn\u0027t be in tree.\n\niniset_rpc_backend will be our stable hook for other projects that\nwant to implement this out of tree. The burden on creating those out\nof tree plugins will be on those that wish to support those\nalternative stacks.\n\nChange-Id: I8073a895c03ec927a2598eff6c2f01e5c82606fc\n"
    },
    {
      "commit": "9d7e776b704d0fa54b2bf6543d054ab0118f5806",
      "tree": "b5a997e301de682866064a04fdcc74483051a3c2",
      "parents": [
        "b632c9ef81090e210fee27346c6e1f2b4f3bedec"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Fri May 29 01:08:53 2015 +0000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Tue Jun 16 10:06:39 2015 +0800"
      },
      "message": "Use Keystone v3 API for user creation\n\nThis includes requiring a domain when creating a user. This will allow us to\ncontrol where users are created in a later patch.\n\nAdding the token to the user creation call is required because of a bad\ninteraction between OpenStackClient, os-client-config and keystoneclient\nwhen dealing with v2 authentication but v3 API calls. It will be cleaned\nup when we switch to v3 credentials.\n\nChange-Id: I6ef50fd384d423bc0f13ee1016a8bdbb0650ecd9\nImplements: bp keystonev3\n"
    },
    {
      "commit": "b632c9ef81090e210fee27346c6e1f2b4f3bedec",
      "tree": "c1c81bbc49541d55a63ac433bafa2e49868edbb6",
      "parents": [
        "97c77b90e2064647b9968dd74fb378c584ece61f"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Thu May 28 23:36:15 2015 +0000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Tue Jun 16 08:38:09 2015 +0800"
      },
      "message": "Use keystone v3 API for projects\n\nAlways use the keystone v3 API for project creation. Make domain a\nrequired argument. Whilst we could simply default this value within the\nfunction I think it\u0027s better to make this explicit as these are things\ndeployers and services need to consider.\n\nIn future we will want to figure out how we want devstack to organize domains\nhowever I don\u0027t believe that it belongs in this patch.\n\nChange-Id: Ib9587193c5c8419dc4b5a608246709baaddd2a52\nImplements: bp keystonev3\n"
    },
    {
      "commit": "a858085afb46922760d9e89c34feb988ea283a54",
      "tree": "2de30ea793eb995d9d5c5a5392ebac93285ea6f7",
      "parents": [
        "493d3b3aff2dcc7c7458d4f70c9a23add6e70c74"
      ],
      "author": {
        "name": "Thomas Bechtold",
        "email": "tbechtold@suse.com",
        "time": "Sun May 31 00:04:33 2015 +0200"
      },
      "committer": {
        "name": "Thomas Bechtold",
        "email": "tbechtold@suse.com",
        "time": "Sun May 31 00:04:33 2015 +0200"
      },
      "message": "Simplify add_user_to_group function\n\nCurrent SLE12 and openSUSE13.X versions can handle usermod\u0027s \u0027-a\u0027 and \u0027-G\u0027\nswitches so remove the special case.\n\nChange-Id: If0f1390a0eb8f41ffffca74525a4648cfe8ea61d\n"
    },
    {
      "commit": "8606c98c53722f425525fa06eee554b7d30f62f6",
      "tree": "73964254155c511d023dc7315ca80126fa0d549a",
      "parents": [
        "cf56d4e35ca3f5fd406068e757c9e82a7e2c6d61"
      ],
      "author": {
        "name": "fumihiko kakuma",
        "email": "kakuma@valinux.co.jp",
        "time": "Mon Apr 13 09:55:06 2015 +0900"
      },
      "committer": {
        "name": "fumihiko kakuma",
        "email": "kakuma@valinux.co.jp",
        "time": "Tue May 26 12:38:35 2015 +0900"
      },
      "message": "Fix remove_disabled_extensions to remove an extension at the last position\n\nremove_disabled_extensions do matching by \u0027$ext_to_remove\",\"\u0027. So it doesn\u0027t\nmatch an extension at the last position in extensions_list.\nThis patch fixes that.\n\nCloses-Bug: #1443254\nChange-Id: I194b483de797697ba06b320cf33f1bac67fc0cc7\n"
    },
    {
      "commit": "6816234dc84b3e81a3de8745e84691d09123ba7f",
      "tree": "7b3ed2ff5a8683025fba29e5b48302f5fd8d79c5",
      "parents": [
        "a79de45497dc4c9d388b698b939002d2857f0cc7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed May 13 15:41:03 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed May 13 15:54:10 2015 -0500"
      },
      "message": "Save stackenv values more often\n\nHaving these for debugging can be handy\n\nChange-Id: I18c2658eec83a0f20f697a3c4c36aa1cf46b7a92\n"
    },
    {
      "commit": "92619ddb61a36fcd1bfaac4b561e56bd5a39a229",
      "tree": "bb8625a6a87e5a13f4bfb9fdd0ceaf817ae9457b",
      "parents": [
        "1fa82aab6634bf815d162978e33b211e1fdef343",
        "3a2c86aabfa985dbdc998f02201649f49f3adab7"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed May 13 11:41:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed May 13 11:41:06 2015 +0000"
      },
      "message": "Merge \"Add python_version function to functions-common\""
    },
    {
      "commit": "3a2c86aabfa985dbdc998f02201649f49f3adab7",
      "tree": "95096a8a4913a635bcfc015e7809da650aa8e88b",
      "parents": [
        "d5bcc42a71083eebf74d645a2bf1eb0c5367dea0"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Tue May 12 13:41:25 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Tue May 12 18:30:31 2015 +0000"
      },
      "message": "Add python_version function to functions-common\n\nThis makes it possible to list virtual site-package directories\nwithout statically stating the python version, which is a bit ugly.\n\nChange-Id: I3e7ac39eb43cdc4f656e0c90f3bfb23545722aef\n"
    },
    {
      "commit": "98f59aafaf88328f6aee98efa0f563fb8bf91ebd",
      "tree": "26a9c539ec10a34dfc67a1c299c4c8c4f4cf01f5",
      "parents": [
        "e3fcc54b9ba99577d9d74d175b86974aab208514"
      ],
      "author": {
        "name": "Mahito OGURA",
        "email": "earthdragon77@gmail.com",
        "time": "Mon May 11 18:02:34 2015 +0900"
      },
      "committer": {
        "name": "Mahito OGURA",
        "email": "earthdragon77@gmail.com",
        "time": "Mon May 11 18:23:07 2015 +0900"
      },
      "message": "Fix function and test for \u0027trueorfalse\u0027.\n\nThe function\u0027s comment is written as follow, however the function accepts\nother values (ex. \"e\", \"t\", \"T\", \"f\", \"F\", etc...).\n\n---\nAccepts as False: 0 no No NO false False FALSE\nAccepts as True: 1 yes Yes YES true True TRUE\n---\n\nMoreover if testval mach True or False, the function exits without resetting\nxtrace.\n\nThis patch fixes the issue and add test patterns.\n\nChange-Id: Ie48a859476faff22a4dfef466516e2d7d62ef0c0\nCloses-bug: #1453687\n"
    },
    {
      "commit": "641dd9ff23058e511d6bf126b0078448bcb672e5",
      "tree": "d6c40fd4566b9376b11d7bb6bd88c51068776458",
      "parents": [
        "5ed2ba896f81fdf76bad852c083fbd112afc7ee6",
        "2796a82ab48107d4445c03938e037e60dd1bbfa9"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu May 07 02:48:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu May 07 02:48:20 2015 +0000"
      },
      "message": "Merge \"Fix negated services with common prefix\""
    },
    {
      "commit": "6e137abbfe66837bc7456425472b53d067591d24",
      "tree": "3891816b03289d4ac48a32e71a5d894e132dce5b",
      "parents": [
        "43dcab990fe3c469f8042c37b176370ed95523a0"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 29 08:22:24 2015 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon May 04 12:15:14 2015 +1000"
      },
      "message": "clean up logging around run_process\n\nWe do a bunch of exec magic unwind in run_process that leads to a lot\nof confusing lines in the logs under xtrace. Instead, disable xtrace\nthrough these parts to ensure that the flow at the end of the day\nmakes more sense.\n\nChange-Id: I91e02465240e704a1a0c0036f5073c0295be018e\n"
    },
    {
      "commit": "e4af92987a882dc2f7bb48527d0bcdbaa2427d4a",
      "tree": "3881e3d175d61f0db9930b61b46bed5e7da0931a",
      "parents": [
        "c9197f6c72039b6029dbe3858b78373d7f3aa96d"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Apr 28 08:57:57 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Apr 28 08:57:57 2015 -0400"
      },
      "message": "fix warn function\n\nThe warn function was putting content into a side log file which made\nit kind of hard to keep an eye on when warnings were actually being\nissued. Let\u0027s just get this into the main output stream.\n\nThe calling of the warn function in git_timed was also incorrect, so\nthe output would not have been what we expected. This solves that as\nwell.\n\nThis will hopefully give us trackable data about how often we need to\nrecover from git clone errors.\n\nChange-Id: Iee0d2df7fb788a4d34044d29ab10afdcafb9bb5a\n"
    },
    {
      "commit": "2796a82ab48107d4445c03938e037e60dd1bbfa9",
      "tree": "532f550099737815e928cfe5e19e04e0ee62c85b",
      "parents": [
        "cd7655cbfcc119e5dafe308ce31e54d3e28b3b63"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Apr 15 08:59:04 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Apr 23 15:10:25 2015 +1000"
      },
      "message": "Fix negated services with common prefix\n\nThe current sed matching mixes up common-prefix matching;\ne.g. \"-q-lbaas,q-lbaasv2\" is changed into just \"v2\"\n\nThis is more verbose, but I think more reliable.  See also\nIb50f782824f89ae4eb9787f11d42416704babd90.\n\nChange-Id: I3faad0841834e24acc811c05015625cf7f848b19\n"
    },
    {
      "commit": "b28b27082c63bc701b4cad8f9c686ba2c1880e6e",
      "tree": "6e9ccd4ffc89a570be0f254a005bb0bd88171d2d",
      "parents": [
        "1235581559087974580c0e5f6e3ade82e9030a70"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Apr 16 08:43:43 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Apr 16 08:43:43 2015 +1000"
      },
      "message": "Append command to screenrc after we update it\n\nIf a group is specified we modify the command to run under \"sg\".  This\ncurrently isn\u0027t reflected in screenrc so rejoining fails\n\nChange-Id: I5c18ba664a6ae9ba9aaa4439a9086bc85085cd75\nCloses-Bug: #1444267\n"
    },
    {
      "commit": "4d7ee095a18af9e834202e92534d2ba7a0b371c5",
      "tree": "1f01fdd772aa14dd75a2550b9ba8c91655bd2cce",
      "parents": [
        "d1549d624dea9b00d7aa0f935759c69290e9ea17"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Apr 07 10:40:49 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 09 07:21:27 2015 -0400"
      },
      "message": "Make screen sleep time configurable\n\nthe sleep 3 in screen_it was added to make devstack pass in the gate\nwith exceptionally slow test cloud nodes. In the gate we now bypass\nthe screen path entirely. However the sleep 3 remains and can add a\ncouple minutes delay into local development runs.\n\nWe\u0027re not sure yet how low this can safely be tuned, so step 1 is to\nmake it configurable, then get devstack team members to try various\noptions to see what works.\n\nChange-Id: I0e6476176fc8589efc4e40e78c2231f704d14e45\n"
    },
    {
      "commit": "9942db6d87952032b852f425b51d5cc3bf57307b",
      "tree": "8466e2dab67994dbb5c81b54da6fc843efeb2e96",
      "parents": [
        "70843539a4ab2ed3c4b5d7042cc5ea717407e488",
        "4599fd174c0c10f3a7e51ad6cba5d4c74abac207"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Apr 03 16:18:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Apr 03 16:18:30 2015 +0000"
      },
      "message": "Merge \"Add roles when we create groups\""
    },
    {
      "commit": "d7c874bca6825441f3990733e7676201e7bc31e8",
      "tree": "d5f9b44fe80f3d07e69f16040052b69d2a1aa5c3",
      "parents": [
        "43479db9105db75d7762e9cfbc950841725fa644",
        "1bd79596c3c5f62cbbef92558156401447a9b5d3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Mar 30 15:05:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Mar 30 15:05:59 2015 +0000"
      },
      "message": "Merge \"Move back isset to the functions-common\""
    },
    {
      "commit": "dc97cb71e85fc807d2cce6f054c785922d322eb9",
      "tree": "86affcfbc7054c209c2ab0a4c3f7955d5e1bf16f",
      "parents": [
        "9720239618189c13734aa32aabee9252707f2db9"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sat Mar 28 08:20:50 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sat Mar 28 14:35:12 2015 -0500"
      },
      "message": "Mostly docs cleanups\n\nFix documentation build errors and RST formatting\n\nChange-Id: Id93153400c5b069dd9d772381558c7085f64c207\n"
    },
    {
      "commit": "41d6f858be8431975762e65db470929c72b8f2a8",
      "tree": "611ecdd011df3c3ab60bfcc71281656f48767d00",
      "parents": [
        "c392fd3b5fd5464d87e514c173e4a5091d412caf"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 25 22:42:46 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 26 15:36:23 2015 -0500"
      },
      "message": "Clean up additional INSTALL_TESTONLY_PACKAGES bits\n\nThe original removal is in https://review.openstack.org/#/c/167669/\n\nChange-Id: I3c59f040523d2cd1453465e80280955218880634\n"
    },
    {
      "commit": "6e275e170c042794560c9b2c442a32c3de55566e",
      "tree": "979948aa709f7f10766fd0b024e3eb0faa40768e",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Mar 26 05:54:28 2015 -0400"
      },
      "committer": {
        "name": "Bharat Kumar Kobagana",
        "email": "bharat.kobagana@redhat.com",
        "time": "Thu Mar 26 20:50:11 2015 +0530"
      },
      "message": "provide an override-defaults phase\n\nduring the glusterfs integration it was seen that plugins might need\nto set new defaults on projects before the project files load. Create\na new override-defaults phase for that.\n\nIntentionally not adding to the documentation yet until we\u0027re sure\nthis works right in the glusterfs case.\n\nReported-By: Deepak C Shetty \u003cdeepakcs@redhat.com\u003e\nChange-Id: I13c961b19bdcc1a99e9a7068fe91bbaac787e948\n"
    },
    {
      "commit": "1bd79596c3c5f62cbbef92558156401447a9b5d3",
      "tree": "3498da8181326cc9421975135d9123268339f974",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Tue Feb 24 14:06:56 2015 +0100"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Thu Mar 26 14:00:02 2015 +0100"
      },
      "message": "Move back isset to the functions-common\n\nisset function was moved to config file related functions by accident,\nthis change also simplfies the isset in a bash \u003e\u003d4.2 way.\n\nAll supported distro has at least bash 4.2. (RHEL6 used 4.1)\n\nChange-Id: Id644b46ff9cdbe18cde46e96aa72764e1c8653ac\n"
    },
    {
      "commit": "eeb7bda510ad29dce7bfc5eb8aed9b6fe25efea1",
      "tree": "550e2caaef10ce56f5bf96277c3293c05e969ea7",
      "parents": [
        "b23054c4b42b1c4ef8b0cdb642e63eac2a91a3f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "message": "eliminate TEST_ONLY differentiation\n\ndevstack is a development and test environment, but by default we were\nonly installing the runtime dependencies. We should install all the\ntesting required packages as well.\n\nChange-Id: I7c95927b9daad15766aac9d1276b10ca62efb24c\n"
    },
    {
      "commit": "1b8c4678cd9a363297efcac15313eefdee8ebd8c",
      "tree": "5456dffe0ec13bb9769d24f963671d0fb267a4f4",
      "parents": [
        "e467cdfeb186f6afad742f25e5dc8db117524942",
        "ec47bc1d720852ca07f1af2143c2a6c1353e9306"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Mar 23 23:08:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Mar 23 23:08:55 2015 +0000"
      },
      "message": "Merge \"Add support for Oracle Linux 7 and later.\""
    },
    {
      "commit": "ec47bc1d720852ca07f1af2143c2a6c1353e9306",
      "tree": "5f334888c4222e270b190919b5a71997778c1372",
      "parents": [
        "d9a7ae8056a253a9f3f50aa1225e7fda6f1a595a"
      ],
      "author": {
        "name": "Wiekus Beukes",
        "email": "wiekus.beukes@oracle.com",
        "time": "Thu Mar 19 08:20:38 2015 -0700"
      },
      "committer": {
        "name": "Wiekus Beukes",
        "email": "wiekus.beukes@oracle.com",
        "time": "Sun Mar 22 21:28:35 2015 -0700"
      },
      "message": "Add support for Oracle Linux 7 and later.\n\nMost of the changes revolves around using MySQL rather than MariaDB,\nplus enabling the addon repos on public-yum.oracle.com.\nThe patch just touch the areas where there is a divergence between the\nFedora and Oracle distributions and in all other cases the is_fedora\nwill result in the correct decision to be made and left as is.\n\nCollapsed the is_suse and is_oraclelinux into a single check in\nconfigure_database_mysql and cleanup_database_mysql\n\nAdded Oracle Linux to MAINTAINERS.rst\n\nRather than duplicating most of the Redhat version check code, added\na check in the block to do the determination if it is Oracle Linux\n\nChange-Id: I5f1f15106329eec67aa008b17847fa44863f243f\n"
    },
    {
      "commit": "597fd75f4178d2179dedef10af3f5dda2994b76c",
      "tree": "640a6c54c0e2c665f7996ec566ecab55fb73c7ea",
      "parents": [
        "889d76b4cf1b465386b1aa6653218fc6bebe2493",
        "fdf00f27db19f572ac1d8fd3714c5b412556dbf3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Mar 20 14:29:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Mar 20 14:29:54 2015 +0000"
      },
      "message": "Merge \"Add defaults for yum proxy variables\""
    },
    {
      "commit": "6f3f310848d1134ff73dd23e246ad00f7cd13365",
      "tree": "74459e319eb613b3a78534773df41192e10c06cf",
      "parents": [
        "d4c95233d6ff9111ebd76888516c94e0899aec28"
      ],
      "author": {
        "name": "Ryan Hsu",
        "email": "rhsu@vmware.com",
        "time": "Thu Mar 19 16:26:45 2015 -0700"
      },
      "committer": {
        "name": "Ryan Hsu",
        "email": "rhsu@vmware.com",
        "time": "Thu Mar 19 16:32:24 2015 -0700"
      },
      "message": "Fix packages not getting installed if service name in base path\n\nCurrently, if devstack base path includes the name of a given\nservice (e.g. nova), then the service\u0027s prereq packages will\nnot be installed. This fix changes the checking the match\nagainst the full path of the package list file rather than the\nname of a given service.\n\nCloses-Bug: #1434314\nChange-Id: Ie81352ebd5691afc6d0019f71d5b62370e8bb95f\n"
    },
    {
      "commit": "d4c95233d6ff9111ebd76888516c94e0899aec28",
      "tree": "41c22e6ae68f6040a0cd68f222486e045110f1ca",
      "parents": [
        "948970928cdb0bc550c4f486ec61537202680a3b",
        "f26deea6b1d7a91da44979d8c7feaf1ff8970b25"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Mar 19 18:22:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Mar 19 18:22:51 2015 +0000"
      },
      "message": "Merge \"create install_default_policy\""
    },
    {
      "commit": "f26deea6b1d7a91da44979d8c7feaf1ff8970b25",
      "tree": "51bdbe570b8fd4160969c7762f554e61a4658199",
      "parents": [
        "c8b2f60a54dc0f5d008752842781bc61078b1ca9"
      ],
      "author": {
        "name": "yuntongjin",
        "email": "yuntongjin@gmail.com",
        "time": "Sat Feb 28 10:50:34 2015 +0800"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Mar 19 09:10:37 2015 -0400"
      },
      "message": "create install_default_policy\n\nRecent versions of oslo policy allow the use of a policy.d to break up\npolicy in a more user understandable way. Nova is going to use this in\nKilo to break out v2 and v2.1 API policy definitions.\n\nThis provides a unified helper for installing sample policies. It\nmakes some assumptions on project directory structure. Porting other\nprojects to use this can happen in the future.\n\nChange-Id: Iec23b095176332414faf76a9c329f8bb5f3aa6c3\n"
    },
    {
      "commit": "4599fd174c0c10f3a7e51ad6cba5d4c74abac207",
      "tree": "11179f93e0f88054534f8b475aa2ad482530a69a",
      "parents": [
        "5e159edab375ed950cc5c91a6c445bbc5541b3c1"
      ],
      "author": {
        "name": "Steve Martinelli",
        "email": "stevemar@ca.ibm.com",
        "time": "Thu Mar 12 21:30:58 2015 -0400"
      },
      "committer": {
        "name": "Steve Martinelli",
        "email": "stevemar@ca.ibm.com",
        "time": "Thu Mar 19 00:59:47 2015 -0400"
      },
      "message": "Add roles when we create groups\n\nWe should prime the groups that were created with some roles on\nprojects. Eventually we can add users directly to the groups\nand not have to resort to individual user assignments.\n\nChange-Id: Icebafc06859f8879c584cfd67aa51cb0c9ce48af\n"
    },
    {
      "commit": "d9a7ae8056a253a9f3f50aa1225e7fda6f1a595a",
      "tree": "712c852129a78f0ac93cbf516c6eb443204b92ce",
      "parents": [
        "aea87e2dc29fabffb16c9c6c4ce3079d30ca4423",
        "7ca90cded374685c8c68ea50381220b915eb0b63"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Mar 19 00:35:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Mar 19 00:35:34 2015 +0000"
      },
      "message": "Merge \"Allow devstack plugins to specify prereq packages\""
    },
    {
      "commit": "fdf00f27db19f572ac1d8fd3714c5b412556dbf3",
      "tree": "98eb0db9a2d0dbe1e4c7cce28b704e4461ea26b2",
      "parents": [
        "518ca616aea969612d6ea3301a714c489a8b4885"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Mar 13 11:50:02 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Mar 18 09:26:15 2015 +1100"
      },
      "message": "Add defaults for yum proxy variables\n\nWithout these defaults, sourcing functions-common with -u turned on\n(as say ./tools/build_wheels.sh does) will bail out with unset\nvariable errors.  Also fix up quoting, and add no_proxy for zypper run\n\nChange-Id: Ideb441634243c1c5ce7db3a375c2d98617e9d1dc\n"
    },
    {
      "commit": "a3430270f3b652317a85c9eabe76962bd64f4543",
      "tree": "6f30660d886f4555b3cbbdf6bf3301f54f80fb0b",
      "parents": [
        "5c619b43dbd9a649cc7bad3f8527c8b9ded1d631"
      ],
      "author": {
        "name": "Andreas Scheuring",
        "email": "andreas.scheuring@de.ibm.com",
        "time": "Mon Mar 09 16:55:32 2015 +0100"
      },
      "committer": {
        "name": "Andreas Scheuring",
        "email": "andreas.scheuring@de.ibm.com",
        "time": "Mon Mar 16 17:00:03 2015 +0100"
      },
      "message": "Support detection of interfaces with non-word chars in the name\n\nThe current regex only matches host interface names that consits\nof \"word characters\" (regex \\w). Intefaces having other special\nchars like \"-\" or \".\" are not parsed. Examples that are not yet\nmatched are br-ex (ovs bridge) or enccw0.0.1234 (s390 eth device\nname).\n\nIn addition it\u0027s hard to understand the the regex.\n\nThis fix is replacing the regex by a simple awk statement also\nmatching those names.\n\nIn addition the determination of the host_ip_iface was moved\ndown into the if clause, as it is only used inside.\n\nChange-Id: I3d1b1afa32956e4e8c55c7e68cbafaf8e03e7da2\nCloses-Bug: #1429903\n"
    },
    {
      "commit": "7ca90cded374685c8c68ea50381220b915eb0b63",
      "tree": "9d31ff411cbd1e2b81d0063e533e6e8775a08853",
      "parents": [
        "cfbf8a165956b0c6b0c921d5486295d7c923310a"
      ],
      "author": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Wed Mar 04 17:25:07 2015 -0800"
      },
      "committer": {
        "name": "Adam Gandelman",
        "email": "adamg@ubuntu.com",
        "time": "Wed Mar 11 14:46:35 2015 -0700"
      },
      "message": "Allow devstack plugins to specify prereq packages\n\nWe offer main devstack components the ability to install their own\nsystem package preqreqs via files/{debs, rpms}/$service.  This adds\nsimilar functionality for plugins, who can now do the same in their\nown tree at ./devstack/files/{debs, rpms}/$plugin.\n\nChange-Id: I63af8dc54c75a6e80ca4b2a96c76233a0795aabb\n"
    },
    {
      "commit": "bf2ad7015d068f9a85c01813cea0aa79143b1d0f",
      "tree": "ab1a91e8e13a882ee4dab1a70141c31133a5815b",
      "parents": [
        "924079b8905669a646cfa328d6bf52e56b79acdc"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 15:16:10 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 22:52:19 2015 -0500"
      },
      "message": "Move configuration functions into inc/*\n\n* config/INI functions from functions-common to to inc/ini-config\n* local.conf meta-config functions from lib/config to inc/meta-config\n\nChange-Id: I00fab724075a693529273878875cfd292d00b18a\n"
    },
    {
      "commit": "93e682c558f954fa35a00d7cc6a6903e8ed59178",
      "tree": "c7f057b6d3d110e01d2da4e4a4f46dc077cac2a3",
      "parents": [
        "aff8fb9be8b48d6f05f4e00561f714346befc846"
      ],
      "author": {
        "name": "Doug Wiegley",
        "email": "dougw@a10networks.com",
        "time": "Tue Mar 03 10:31:30 2015 -0700"
      },
      "committer": {
        "name": "Doug Wiegley",
        "email": "dougw@a10networks.com",
        "time": "Tue Mar 03 10:31:30 2015 -0700"
      },
      "message": "Revert change to remove lbaas from devstack; it breaks grenade.\n\nChange-Id: Ie2adaeb7f27d6d646ca2e6e575fb430b9b74b276\n"
    },
    {
      "commit": "b124f4d595cc41b4f20bf935ffd0848448b3713c",
      "tree": "bd9675f86318038a0bd2a57a057ca7cb68ef3a16",
      "parents": [
        "172fae6a3ebf867663525048947c797c9209f3eb"
      ],
      "author": {
        "name": "Al Miller",
        "email": "al.miller@hp.com",
        "time": "Tue Feb 03 20:18:42 2015 -0800"
      },
      "committer": {
        "name": "Al Miller",
        "email": "al.miller@ajmiller.net",
        "time": "Fri Feb 27 16:36:51 2015 +0000"
      },
      "message": "Remove LBaaS support from devstack\n\nDevstack support for LBaaS is being migrated to an external\nplugin in the neutron-lbaas repository.  The only LBaaS-\nspecific code that remains in devstack is a hook to support\nexisting configs that enable q-lbaas.  In that case, load\nthe external plugin if necessary.\n\nChange-Id: I592f64407ccf1e722b8d9788917879d0236acf0b\nDepends-On: I64a94aeeabe6357b5ea7796e34c9306c55c9ae67\n"
    },
    {
      "commit": "7591be546695da7532432a24f649907aa2c83ead",
      "tree": "91797c100973bd99033cf7b68ca3e208deebbdc6",
      "parents": [
        "20585f5b232c000cddb322771f49b89975f0e551",
        "9d09f0980285b5b5d5ccf3865cab1c5df49b25d5"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 19 01:11:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 19 01:11:54 2015 +0000"
      },
      "message": "Merge \"Remove is_rackspace function from functions-common\""
    },
    {
      "commit": "5ce44cd63b6e2b53f08a6b4b87cb4ab11d1ade26",
      "tree": "5f396699c97e2df46b99bc46443f1db9bc3d7955",
      "parents": [
        "2b564763aafe6466f42bc5cf2ccc47ddf4169986"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 12 22:18:33 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 16 10:52:18 2015 -0600"
      },
      "message": "Fix is_keystone_enabled()\n\nis_keystone_enabled() was calling is_service_enabled(), which is what called\nis_keystone_enabled() in the first place.  Make it work as designed and\nalso change calls to use the full service name.  Note that this is all\nstill comptible with the prior usage of \u0027is_service_enabled key\u0027.\n\nChange-Id: I9c28377ecf074b7996461d2a4ca12d88dfc4d47e\n"
    },
    {
      "commit": "9b215db569dcee2e9cd52c3336ba14b73ad05ab0",
      "tree": "165ec0b1d4d9138a5ee794068a368e06011e06e0",
      "parents": [
        "8ed3e40be8672aa23ebd2b6c95accf06a2ff8ac4"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Tue Feb 10 18:19:57 2015 +1100"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Wed Feb 11 14:51:22 2015 +1100"
      },
      "message": "Rename get_or_add_user_role\n\nget_or_add_user_role is specific to adding a role on a project.\nRename it to get_or_add_user_project_role to allow room for adding a\ndomain specific role function.\n\nChange-Id: I999308098d22be9800578ae67144a3b687fbc3be\n"
    },
    {
      "commit": "3273b6d280e2b6edd5dc3e4ba089afb5025e408a",
      "tree": "ee750219375baaee2751afee08a6cffab9296c21",
      "parents": [
        "f9222da73fa52b389f38521ea4df553c562cd798",
        "490430dbe3b7d9979b4623f2c327bb0a74436401"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Feb 06 20:45:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Feb 06 20:45:45 2015 +0000"
      },
      "message": "Merge \"Split functions-common: python functions\""
    },
    {
      "commit": "e79678af5ed1621cd8740879b496a0d3716ab8b1",
      "tree": "8d89cedb7c4d249e305803f4c9f8ef8449132e9a",
      "parents": [
        "70157976aec6adf26ac0b3734d2017e2356efd75",
        "18f39bfb1f6af23a7fc5f5a5b822e7216ce9ec62"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Fri Feb 06 16:16:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Fri Feb 06 16:16:36 2015 +0000"
      },
      "message": "Merge \"Remove the default project from all users\""
    },
    {
      "commit": "d7be20853b74a8cf5d2fceafdd32745c1689f4d9",
      "tree": "a076d146b45e2cf22cc922b629eae3a821f3c7dd",
      "parents": [
        "8458b458a0d9848e07420cc9074cd925315ed9e1",
        "36298eec001f900c00a8ac89143375620af9ce3e"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Feb 05 13:40:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Feb 05 13:40:00 2015 +0000"
      },
      "message": "Merge \"Add default for YUM\""
    },
    {
      "commit": "36298eec001f900c00a8ac89143375620af9ce3e",
      "tree": "1a8c367679da4e82414a807bc3a71c0a2b3e8b37",
      "parents": [
        "18e0a335b65e50af5bade16176a955775b6dc372"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Feb 04 10:29:31 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Feb 04 10:29:31 2015 +1100"
      },
      "message": "Add default for YUM\n\nThis allows tools/* to use install_packages, etc, without having to\npull in stackrc for the $YUM definition.  Alternative to\nIef944af1ab177638bf818624a216751821e6330b\n\nChange-Id: I7fe37079240e8cabbdffdcae5ad9d21e122e43c2\n"
    },
    {
      "commit": "490430dbe3b7d9979b4623f2c327bb0a74436401",
      "tree": "527289f426c49bb51234a1e0621a0afe1ffac20e",
      "parents": [
        "a1b82cc1b5a7172c3fdf17d2c3f0725660911ad7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:38:35 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:59:48 2015 -0600"
      },
      "message": "Split functions-common: python functions\n\nMove Python-related functions into inc/python\n\nShould be transparent to all callers as it is sourced from functions-common\n\nChange-Id: I88043830cef9211b4e0baa91bfcc7a92125afa9f\n"
    }
  ],
  "next": "a1b82cc1b5a7172c3fdf17d2c3f0725660911ad7"
}
