{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.kyS1ABa3/b1/ironic_29.0.0-3_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.kyS1ABa3/b2/ironic_29.0.0-3_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,6 +1,6 @@\n \n 5cee9f7b9160bb5400f9f6760ea14831 23004 net optional ironic-api_29.0.0-3_all.deb\n- de6bd48e144d6a6423dd4208527839b2 164540 net optional ironic-common_29.0.0-3_all.deb\n+ 72adb2409f3bca48c5bb9b2e3fb48e03 164536 net optional ironic-common_29.0.0-3_all.deb\n 33351f5a0d29815a6f9b0916c9d231a7 9344 net optional ironic-conductor_29.0.0-3_all.deb\n- e35e2b02e213d29dfa0cd08aec9a5d48 3354268 doc optional ironic-doc_29.0.0-3_all.deb\n+ 65195d1eb9a46439be938ff6c2954502 3354316 doc optional ironic-doc_29.0.0-3_all.deb\n da23fdf71352c7b339dbf0841c98e8bc 1112924 python optional python3-ironic_29.0.0-3_all.deb\n"}, {"source1": "ironic-common_29.0.0-3_all.deb", "source2": "ironic-common_29.0.0-3_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-04-14 09:20:13.000000 debian-binary\n--rw-r--r-- 0 0 0 17412 2025-04-14 09:20:13.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 17408 2025-04-14 09:20:13.000000 control.tar.xz\n -rw-r--r-- 0 0 0 146936 2025-04-14 09:20:13.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/ironic-common/ironic.conf", "source2": "./usr/share/ironic-common/ironic.conf", "comments": ["Ordering differences only"], "unified_diff": "@@ -438,28 +438,28 @@\n # \"service\" is a default convention for OpenStack deployments, but the requisite access and details around end configuration are largely up\n # to an operator if they are doing an OpenStack deployment manually. (string value)\n #rbac_service_project_name = service\n \n # Hash function to use when building the hash ring. If running on a FIPS system, do not use md5. WARNING: all ironic services in a cluster\n # MUST use the same algorithm at all times. Changing the algorithm requires an offline update. (string value)\n # Possible values:\n-# md5 - \n+# sha3_512 - \n+# sha3_256 - \n+# shake_256 - \n # sha256 - \n-# sha224 - \n # sha3_224 - \n-# shake_256 - \n-# sha1 - \n-# sha512 - \n+# md5 - \n # blake2b - \n # shake_128 - \n-# sha3_384 - \n # sha384 - \n-# sha3_512 - \n+# sha3_384 - \n+# sha512 - \n # blake2s - \n-# sha3_256 - \n+# sha224 - \n+# sha1 - \n # Advanced Option: intended for advanced users and not used\n # by the majority of users, and might have a significant\n # effect on stability and/or performance.\n #hash_ring_algorithm = md5\n \n #\n # From oslo.log\n"}]}]}]}, {"source1": "ironic-doc_29.0.0-3_all.deb", "source2": "ironic-doc_29.0.0-3_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2025-04-14 09:20:13.000000 debian-binary\n--rw-r--r-- 0 0 0 33576 2025-04-14 09:20:13.000000 control.tar.xz\n--rw-r--r-- 0 0 0 3320500 2025-04-14 09:20:13.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 33560 2025-04-14 09:20:13.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 3320564 2025-04-14 09:20:13.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -4,15 +4,15 @@\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/\n -rw-r--r-- 0 root (0) root (0) 3231 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 2055 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/copyright\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/46a710314a54e51427dfa661f40debfb/\n--rw-r--r-- 0 root (0) root (0) 49940 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/46a710314a54e51427dfa661f40debfb/ironic.conf.sample.gz\n+-rw-r--r-- 0 root (0) root (0) 49942 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/46a710314a54e51427dfa661f40debfb/ironic.conf.sample.gz\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/bca715bf2d67df782be72fe5453fdf66/\n -rw-r--r-- 0 root (0) root (0) 6329 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_downloads/bca715bf2d67df782be72fe5453fdf66/ironic.policy.yaml.sample.gz\n drwxr-xr-x 0 root (0) root (0) 0 2025-04-14 09:20:13.000000 ./usr/share/doc/ironic-doc/html/_images/\n -rw-r--r-- 0 root (0) root (0) 7850 2025-03-19 21:03:23.000000 ./usr/share/doc/ironic-doc/html/_images/agent-token-with-pxe-ipxe.svg\n -rw-r--r-- 0 root (0) root (0) 9822 2025-03-19 21:03:23.000000 ./usr/share/doc/ironic-doc/html/_images/agent-token-with-virtual-media.svg\n -rw-r--r-- 0 root (0) root (0) 8747 2025-03-19 21:03:23.000000 ./usr/share/doc/ironic-doc/html/_images/boot-from-volume.svg\n -rw-r--r-- 0 root (0) root (0) 49070 2025-03-19 21:03:23.000000 ./usr/share/doc/ironic-doc/html/_images/conceptual_architecture.png\n"}, {"source1": "./usr/share/doc/ironic-doc/html/_downloads/46a710314a54e51427dfa661f40debfb/ironic.conf.sample.gz", "source2": "./usr/share/doc/ironic-doc/html/_downloads/46a710314a54e51427dfa661f40debfb/ironic.conf.sample.gz", "unified_diff": null, "details": [{"source1": "ironic.conf.sample", "source2": "ironic.conf.sample", "comments": ["Ordering differences only"], "unified_diff": "@@ -676,28 +676,28 @@\n \n # Hash function to use when building the hash ring. If running\n # on a FIPS system, do not use md5. WARNING: all ironic\n # services in a cluster MUST use the same algorithm at all\n # times. Changing the algorithm requires an offline update.\n # (string value)\n # Possible values:\n-# md5 - \n-# blake2s - \n-# sha512 - \n-# shake_256 - \n-# sha3_224 - \n # sha3_384 - \n+# sha256 - \n # sha1 - \n+# sha3_256 - \n # shake_128 - \n-# sha256 - \n+# sha3_224 - \n+# sha512 - \n+# shake_256 - \n+# blake2s - \n # blake2b - \n-# sha3_256 - \n # sha224 - \n-# sha384 - \n # sha3_512 - \n+# md5 - \n+# sha384 - \n # Advanced Option: intended for advanced users and not used\n # by the majority of users, and might have a significant\n # effect on stability and/or performance.\n #hash_ring_algorithm = md5\n \n #\n # From oslo.log\n"}]}, {"source1": "./usr/share/doc/ironic-doc/html/configuration/config.html", "source2": "./usr/share/doc/ironic-doc/html/configuration/config.html", "unified_diff": "@@ -644,15 +644,15 @@\n
Type:
\n

string

\n
\n
Default:
\n

md5

\n
\n
Valid Values:
\n-

md5, blake2s, sha512, shake_256, sha3_224, sha3_384, sha1, shake_128, sha256, blake2b, sha3_256, sha224, sha384, sha3_512

\n+

sha3_384, sha256, sha1, sha3_256, shake_128, sha3_224, sha512, shake_256, blake2s, blake2b, sha224, sha3_512, md5, sha384

\n
\n
Advanced Option:
\n

Intended for advanced users and not used\n by the majority of users, and might have a significant\n effect on stability and/or performance.

\n
\n \n@@ -1289,106 +1289,14 @@\n

service

\n
\n \n

The project name utilized for Role Based Access Control checks for the reserved service project. This project is utilized for services to have accounts for cross-service communication. Often these accounts require higher levels of access, and effectively this permits accounts from the service to not be restricted to project scoping of responses. i.e. The service project user with a service role will be able to see nodes across all projects, similar to System scoped access. If not set to a value, and all service role access will be filtered matching an owner or lessee, if applicable. If an operator wishes to make behavior visible for all service role users across all projects, then a custom policy must be used to override the default \u201cservice_role\u201d rule. It should be noted that the value of \u201cservice\u201d is a default convention for OpenStack deployments, but the requisite access and details around end configuration are largely up to an operator if they are doing an OpenStack deployment manually.

\n \n \n
\n-
\n-run_external_periodic_tasks\u00b6
\n-
\n-
Type:
\n-

boolean

\n-
\n-
Default:
\n-

True

\n-
\n-
\n-

Some periodic tasks can be run in a separate process. Should we run them here?

\n-
\n-\n-
\n-
\n-backdoor_port\u00b6
\n-
\n-
Type:
\n-

string

\n-
\n-
Default:
\n-

<None>

\n-
\n-
\n-

Enable eventlet backdoor. Acceptable values are 0, <port>, and <start>:<end>, where 0 results in listening on a random tcp port number; <port> results in listening on the specified port number (and not enabling backdoor if that port is in use); and <start>:<end> results in listening on the smallest unused port number within the specified range of port numbers. The chosen port is displayed in the service\u2019s log file.

\n-
\n-

Warning

\n-

This option is deprecated for removal.\n-Its value may be silently ignored \n-in the future.

\n-
\n-
Reason:
\n-

The \u2018backdoor_port\u2019 option is deprecated and will be removed in a future release.

\n-
\n-
\n-
\n-
\n-\n-
\n-
\n-backdoor_socket\u00b6
\n-
\n-
Type:
\n-

string

\n-
\n-
Default:
\n-

<None>

\n-
\n-
\n-

Enable eventlet backdoor, using the provided path as a unix socket that can receive connections. This option is mutually exclusive with \u2018backdoor_port\u2019 in that only one should be provided. If both are provided then the existence of this option overrides the usage of that option. Inside the path {pid} will be replaced with the PID of the current process.

\n-
\n-

Warning

\n-

This option is deprecated for removal.\n-Its value may be silently ignored \n-in the future.

\n-
\n-
Reason:
\n-

The \u2018backdoor_socket\u2019 option is deprecated and will be removed in a future release.

\n-
\n-
\n-
\n-
\n-\n-
\n-
\n-log_options\u00b6
\n-
\n-
Type:
\n-

boolean

\n-
\n-
Default:
\n-

True

\n-
\n-
\n-

Enables or disables logging values of all registered options when starting a service (at DEBUG level).

\n-
\n-\n-
\n-
\n-graceful_shutdown_timeout\u00b6
\n-
\n-
Type:
\n-

integer

\n-
\n-
Default:
\n-

60

\n-
\n-
\n-

Specify a timeout after which a gracefully shutdown server will exit. Zero value means endless wait.

\n-
\n-\n-
\n
\n executor_thread_pool_size\u00b6
\n
\n
Type:
\n

integer

\n
\n
Default:
\n@@ -1963,14 +1871,106 @@\n
Default:
\n

False

\n
\n
\n

Enables or disables fatal status of deprecations.

\n
\n \n+
\n+
\n+run_external_periodic_tasks\u00b6
\n+
\n+
Type:
\n+

boolean

\n+
\n+
Default:
\n+

True

\n+
\n+
\n+

Some periodic tasks can be run in a separate process. Should we run them here?

\n+
\n+\n+
\n+
\n+backdoor_port\u00b6
\n+
\n+
Type:
\n+

string

\n+
\n+
Default:
\n+

<None>

\n+
\n+
\n+

Enable eventlet backdoor. Acceptable values are 0, <port>, and <start>:<end>, where 0 results in listening on a random tcp port number; <port> results in listening on the specified port number (and not enabling backdoor if that port is in use); and <start>:<end> results in listening on the smallest unused port number within the specified range of port numbers. The chosen port is displayed in the service\u2019s log file.

\n+
\n+

Warning

\n+

This option is deprecated for removal.\n+Its value may be silently ignored \n+in the future.

\n+
\n+
Reason:
\n+

The \u2018backdoor_port\u2019 option is deprecated and will be removed in a future release.

\n+
\n+
\n+
\n+
\n+\n+
\n+
\n+backdoor_socket\u00b6
\n+
\n+
Type:
\n+

string

\n+
\n+
Default:
\n+

<None>

\n+
\n+
\n+

Enable eventlet backdoor, using the provided path as a unix socket that can receive connections. This option is mutually exclusive with \u2018backdoor_port\u2019 in that only one should be provided. If both are provided then the existence of this option overrides the usage of that option. Inside the path {pid} will be replaced with the PID of the current process.

\n+
\n+

Warning

\n+

This option is deprecated for removal.\n+Its value may be silently ignored \n+in the future.

\n+
\n+
Reason:
\n+

The \u2018backdoor_socket\u2019 option is deprecated and will be removed in a future release.

\n+
\n+
\n+
\n+
\n+\n+
\n+
\n+log_options\u00b6
\n+
\n+
Type:
\n+

boolean

\n+
\n+
Default:
\n+

True

\n+
\n+
\n+

Enables or disables logging values of all registered options when starting a service (at DEBUG level).

\n+
\n+\n+
\n+
\n+graceful_shutdown_timeout\u00b6
\n+
\n+
Type:
\n+

integer

\n+
\n+
Default:
\n+

60

\n+
\n+
\n+

Specify a timeout after which a gracefully shutdown server will exit. Zero value means endless wait.

\n+
\n+\n
\n

agent\u00b6

\n
\n
\n
\n manage_agent_boot\u00b6
\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -441,16 +441,16 @@\n refreshed on the next access.\n hash_ring_algorithm_\b\u00b6\n Type:\n string\n Default:\n md5\n Valid Values:\n- md5, blake2s, sha512, shake_256, sha3_224, sha3_384, sha1,\n- shake_128, sha256, blake2b, sha3_256, sha224, sha384, sha3_512\n+ sha3_384, sha256, sha1, sha3_256, shake_128, sha3_224, sha512,\n+ shake_256, blake2s, blake2b, sha224, sha3_512, md5, sha384\n Advanced Option:\n Intended for advanced users and not used by the majority of users,\n and might have a significant effect on stability and/or\n performance.\n Hash function to use when building the hash ring. If running on a FIPS\n system, do not use md5. WARNING: all ironic services in a cluster MUST\n use the same algorithm at all times. Changing the algorithm requires an\n@@ -877,69 +877,14 @@\n all service role access will be filtered matching anownerorlessee, if\n applicable. If an operator wishes to make behavior visible for all\n service role users across all projects, then a custom policy must be used\n to override the default \u201cservice_role\u201d rule. It should be noted that the\n value of \u201cservice\u201d is a default convention for OpenStack deployments, but\n the requisite access and details around end configuration are largely up\n to an operator if they are doing an OpenStack deployment manually.\n- run_external_periodic_tasks_\b\u00b6\n- Type:\n- boolean\n- Default:\n- True\n- Some periodic tasks can be run in a separate process. Should we run them\n- here?\n- backdoor_port_\b\u00b6\n- Type:\n- string\n- Default:\n- \n- Enable eventlet backdoor. Acceptable values are 0, , and :\n- , where 0 results in listening on a random tcp port number; \n- results in listening on the specified port number (and not enabling\n- backdoor if that port is in use); and : results in listening\n- on the smallest unused port number within the specified range of port\n- numbers. The chosen port is displayed in the service\u2019s log file.\n- Warning\n- This option is deprecated for removal. Its value may be silently ignored\n- in the future.\n- Reason:\n- The \u2018backdoor_port\u2019 option is deprecated and will be removed in a\n- future release.\n- backdoor_socket_\b\u00b6\n- Type:\n- string\n- Default:\n- \n- Enable eventlet backdoor, using the provided path as a unix socket that\n- can receive connections. This option is mutually exclusive with\n- \u2018backdoor_port\u2019 in that only one should be provided. If both are provided\n- then the existence of this option overrides the usage of that option.\n- Inside the path {pid} will be replaced with the PID of the current\n- process.\n- Warning\n- This option is deprecated for removal. Its value may be silently ignored\n- in the future.\n- Reason:\n- The \u2018backdoor_socket\u2019 option is deprecated and will be removed in a\n- future release.\n- log_options_\b\u00b6\n- Type:\n- boolean\n- Default:\n- True\n- Enables or disables logging values of all registered options when\n- starting a service (at DEBUG level).\n- graceful_shutdown_timeout_\b\u00b6\n- Type:\n- integer\n- Default:\n- 60\n- Specify a timeout after which a gracefully shutdown server will exit.\n- Zero value means endless wait.\n executor_thread_pool_size_\b\u00b6\n Type:\n integer\n Default:\n 64\n Size of executor thread pool when executor is threading or eventlet.\n D\bDe\bep\bpr\bre\bec\bca\bat\bte\bed\bd V\bVa\bar\bri\bia\bat\bti\bio\bon\bns\bs_\b?\b\u00b6\n@@ -1236,14 +1181,69 @@\n levels are filtered.\n fatal_deprecations_\b\u00b6\n Type:\n boolean\n Default:\n False\n Enables or disables fatal status of deprecations.\n+ run_external_periodic_tasks_\b\u00b6\n+ Type:\n+ boolean\n+ Default:\n+ True\n+ Some periodic tasks can be run in a separate process. Should we run them\n+ here?\n+ backdoor_port_\b\u00b6\n+ Type:\n+ string\n+ Default:\n+ \n+ Enable eventlet backdoor. Acceptable values are 0, , and :\n+ , where 0 results in listening on a random tcp port number; \n+ results in listening on the specified port number (and not enabling\n+ backdoor if that port is in use); and : results in listening\n+ on the smallest unused port number within the specified range of port\n+ numbers. The chosen port is displayed in the service\u2019s log file.\n+ Warning\n+ This option is deprecated for removal. Its value may be silently ignored\n+ in the future.\n+ Reason:\n+ The \u2018backdoor_port\u2019 option is deprecated and will be removed in a\n+ future release.\n+ backdoor_socket_\b\u00b6\n+ Type:\n+ string\n+ Default:\n+ \n+ Enable eventlet backdoor, using the provided path as a unix socket that\n+ can receive connections. This option is mutually exclusive with\n+ \u2018backdoor_port\u2019 in that only one should be provided. If both are provided\n+ then the existence of this option overrides the usage of that option.\n+ Inside the path {pid} will be replaced with the PID of the current\n+ process.\n+ Warning\n+ This option is deprecated for removal. Its value may be silently ignored\n+ in the future.\n+ Reason:\n+ The \u2018backdoor_socket\u2019 option is deprecated and will be removed in a\n+ future release.\n+ log_options_\b\u00b6\n+ Type:\n+ boolean\n+ Default:\n+ True\n+ Enables or disables logging values of all registered options when\n+ starting a service (at DEBUG level).\n+ graceful_shutdown_timeout_\b\u00b6\n+ Type:\n+ integer\n+ Default:\n+ 60\n+ Specify a timeout after which a gracefully shutdown server will exit.\n+ Zero value means endless wait.\n *\b**\b**\b**\b**\b* a\bag\bge\ben\bnt\bt_\b?\b\u00b6 *\b**\b**\b**\b**\b*\n manage_agent_boot_\b\u00b6\n Type:\n boolean\n Default:\n True\n Whether Ironic will manage booting of the agent ramdisk. If set to False,\n"}]}, {"source1": "./usr/share/doc/ironic-doc/html/configuration/sample-config.html", "source2": "./usr/share/doc/ironic-doc/html/configuration/sample-config.html", "comments": ["Ordering differences only"], "unified_diff": "@@ -783,28 +783,28 @@\n \n # Hash function to use when building the hash ring. If running\n # on a FIPS system, do not use md5. WARNING: all ironic\n # services in a cluster MUST use the same algorithm at all\n # times. Changing the algorithm requires an offline update.\n # (string value)\n # Possible values:\n-# md5 - <No description provided>\n-# blake2s - <No description provided>\n-# sha512 - <No description provided>\n-# shake_256 - <No description provided>\n-# sha3_224 - <No description provided>\n # sha3_384 - <No description provided>\n+# sha256 - <No description provided>\n # sha1 - <No description provided>\n+# sha3_256 - <No description provided>\n # shake_128 - <No description provided>\n-# sha256 - <No description provided>\n+# sha3_224 - <No description provided>\n+# sha512 - <No description provided>\n+# shake_256 - <No description provided>\n+# blake2s - <No description provided>\n # blake2b - <No description provided>\n-# sha3_256 - <No description provided>\n # sha224 - <No description provided>\n-# sha384 - <No description provided>\n # sha3_512 - <No description provided>\n+# md5 - <No description provided>\n+# sha384 - <No description provided>\n # Advanced Option: intended for advanced users and not used\n # by the majority of users, and might have a significant\n # effect on stability and/or performance.\n #hash_ring_algorithm = md5\n \n #\n # From oslo.log\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -688,28 +688,28 @@\n \n # Hash function to use when building the hash ring. If running\n # on a FIPS system, do not use md5. WARNING: all ironic\n # services in a cluster MUST use the same algorithm at all\n # times. Changing the algorithm requires an offline update.\n # (string value)\n # Possible values:\n-# md5 - \n-# blake2s - \n-# sha512 - \n-# shake_256 - \n-# sha3_224 - \n # sha3_384 - \n+# sha256 - \n # sha1 - \n+# sha3_256 - \n # shake_128 - \n-# sha256 - \n+# sha3_224 - \n+# sha512 - \n+# shake_256 - \n+# blake2s - \n # blake2b - \n-# sha3_256 - \n # sha224 - \n-# sha384 - \n # sha3_512 - \n+# md5 - \n+# sha384 - \n # Advanced Option: intended for advanced users and not used\n # by the majority of users, and might have a significant\n # effect on stability and/or performance.\n #hash_ring_algorithm = md5\n \n #\n # From oslo.log\n"}]}]}]}]}]}