'swift-ring-builder <builder_file> set_info
<search-value> <ip>:<port>[R<r_ip>:<r_port>]/<device_name>_<meta>
[<search-value> <ip>:<port>[R<r_ip>:<r_port>]/<device_name>_<meta>] ...
[--yes]
or
swift-ring-builder <builder_file> set_info
--ip <ip or hostname> --port <port>
--replication-ip <r_ip or r_hostname> --replication-port <r_port>
--device <device_name> --meta <meta>
--change-ip <ip or hostname> --change-port <port>
--change-replication-ip <r_ip or r_hostname>
--change-replication-port <r_port>
--change-device <device_name>
--change-meta <meta>
[--yes]
Where <r_ip>, <r_hostname> and <r_port> are replication ip, hostname
and port.
Any of the options are optional in both cases.
For each search-value, resets the matched device\'s information.
This information isn\'t used to assign partitions, so you can use
\'write_ring\' afterward to rewrite the current ring with the newer
device information. Any of the parts are optional in the final
<ip>:<port>/<device_name>_<meta> parameter; just give what you
want to change. For instance set_info d74 _"snet: 5.6.7.8" would
just update the meta data for device id 74.
Option --yes assume a yes response to all questions.'

@staticmethod
def set_info():

    if (len(argv) < 5):
        print(Commands.set_info.__doc__.strip())
        print()
        print(parse_search_value.__doc__.strip())
        exit(EXIT_ERROR)
    try:
        _parse_set_info_values(argv[3:])
    except ValueError as err:
        print(err)
        exit(EXIT_ERROR)
    builder.save(builder_file)
    exit(EXIT_SUCCESS)
