)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"81b6eeec37476b464f4aa4d80f7e0ae5f20da623","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4cba5753_e764fe73","updated":"2024-11-29 10:00:56.000000000","message":"recheck\n\nunrelated probe test setup failure \n\n```\nself \u003d \u003ctest.probe.test_sharder.TestManagedContainerSharding testMethod\u003dtest_manage_shard_ranges_unsharded_deleted_root_gets_undeleted\u003e\n\n    def setUp(self):\n        client.logger.setLevel(client.logging.WARNING)\n        client_requests.logging.getLogger().setLevel(\n            client_requests.logging.WARNING)\n        super(BaseTestContainerSharding, self).setUp()\n        _, self.admin_token \u003d get_auth(\n            PROXY_BASE_URL + \u0027/auth/v1.0\u0027, \u0027admin:admin\u0027, \u0027admin\u0027)\n        self._setup_container_name()\n\u003e       self.init_brain(self.container_name)\n\ntest/probe/test_sharder.py:129: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ntest/probe/test_sharder.py:141: in init_brain\n    self.brain.put_container(policy_index\u003dint(self.policy))\ntest/probe/brain.py:158: in put_container\n    self.client.put_container(self.container_name, headers\u003dheaders)\ntest/probe/brain.py:197: in put_container\n    return client.put_container(self.url, self.token, container_name,\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nurl \u003d \u0027http://127.0.0.1:8080/v1/AUTH_test\u0027\ntoken \u003d \u0027AUTH_tkfc995df378ff436abd02c7769c37bef8\u0027\ncontainer \u003d \u0027container-e4436afb-2f59-4632-8643-77f84f44a638\u0027\nheaders \u003d {\u0027X-Storage-Policy\u0027: \u0027gold\u0027}, http_conn \u003d None, response_dict \u003d None\nservice_token \u003d None, query_string \u003d None\n\n    def put_container(url, token, container, headers\u003dNone, http_conn\u003dNone,\n                      response_dict\u003dNone, service_token\u003dNone, query_string\u003dNone):\n        \"\"\"\n        Create a container\n    \n        :param url: storage URL\n        :param token: auth token\n        :param container: container name to create\n        :param headers: additional headers to include in the request\n        :param http_conn: a tuple of (parsed url, HTTPConnection object),\n                          (If None, it will create the conn object)\n        :param response_dict: an optional dictionary into which to place\n                         the response - status, reason and headers\n        :param service_token: service auth token\n        :param query_string: if set will be appended with \u0027?\u0027 to generated path\n        :raises ClientException: HTTP PUT request failed\n        \"\"\"\n        close_conn \u003d False\n        if http_conn:\n            parsed, conn \u003d http_conn\n        else:\n            parsed, conn \u003d http_connection(url)\n            close_conn \u003d True\n        path \u003d \u0027%s/%s\u0027 % (parsed.path, quote(container))\n        method \u003d \u0027PUT\u0027\n        req_headers \u003d {\u0027X-Auth-Token\u0027: token}\n        if service_token:\n            req_headers[\u0027X-Service-Token\u0027] \u003d service_token\n        if headers:\n            req_headers.update(headers)\n        if \u0027content-length\u0027 not in (k.lower() for k in req_headers):\n            req_headers[\u0027Content-Length\u0027] \u003d \u00270\u0027\n        if query_string:\n            path +\u003d \u0027?\u0027 + query_string.lstrip(\u0027?\u0027)\n        conn.request(method, path, \u0027\u0027, req_headers)\n        resp \u003d conn.getresponse()\n        body \u003d resp.read()\n        if close_conn:\n            conn.close()\n    \n        store_response(resp, response_dict)\n    \n        http_log((\u0027%s%s\u0027 % (url.replace(parsed.path, \u0027\u0027), path), method,),\n                 {\u0027headers\u0027: req_headers}, resp, body)\n        if resp.status \u003c 200 or resp.status \u003e\u003d 300:\n\u003e           raise ClientException.from_response(resp, \u0027Container PUT failed\u0027, body)\nE           swiftclient.exceptions.ClientException: Container PUT failed: http://127.0.0.1:8080/v1/AUTH_test/container-e4436afb-2f59-4632-8643-77f84f44a638 503 Service Unavailable  [first 60 chars of response] b\u0027\u003chtml\u003e\u003ch1\u003eService Unavailable\u003c/h1\u003e\u003cp\u003eThe server is currently\u0027 (txn: txd6323baad4dd460999644-006748c7c5)\n\n```","commit_id":"04e9dc5748f2a4836a55b4cc9ee6b59d3dc7a496"}]}
