Index: patroni/patroni/validator.py
===================================================================
--- patroni.orig/patroni/validator.py
+++ patroni/patroni/validator.py
@@ -53,13 +53,9 @@ def validate_host_port(host_port, listen
     return True
 
 
-def validate_host_port_list(value):
-    assert all([validate_host_port(v) for v in value]), "didn't pass the validation"
-    return True
-
-
 def comma_separated_host_port(string):
-    return validate_host_port_list([s.strip() for s in string.split(",")])
+    assert all([validate_host_port(s.strip()) for s in string.split(",")]), "didn't pass the validation"
+    return True
 
 
 def validate_host_port_listen(host_port):
@@ -295,21 +291,11 @@ def assert_(condition, message="Wrong va
 
 userattributes = {"username": "", Optional("password"): ""}
 available_dcs = [m.split(".")[-1] for m in dcs_modules()]
-validate_host_port_list.expected_type = list
 comma_separated_host_port.expected_type = string_types
 validate_connect_address.expected_type = string_types
 validate_host_port_listen.expected_type = string_types
 validate_host_port_listen_multiple_hosts.expected_type = string_types
 validate_data_dir.expected_type = string_types
-validate_etcd = {
-    Or("host", "hosts", "srv", "srv_suffix", "url", "proxy"): Case({
-        "host": validate_host_port,
-        "hosts": Or(comma_separated_host_port, [validate_host_port]),
-        "srv": str,
-        "srv_suffix": str,
-        "url": str,
-        "proxy": str})
-}
 
 schema = Schema({
   "name": str,
@@ -334,20 +320,19 @@ schema = Schema({
               "host": validate_host_port,
               "url": str})
           },
-      "etcd": validate_etcd,
-      "etcd3": validate_etcd,
+      "etcd": {
+          Or("host", "hosts", "srv", "url", "proxy"): Case({
+              "host": validate_host_port,
+              "hosts": Or(comma_separated_host_port, [validate_host_port]),
+              "srv": str,
+              "url": str,
+              "proxy": str})
+         },
       "exhibitor": {
           "hosts": [str],
           "port": lambda i: assert_(int(i) <= 65535),
           Optional("pool_interval"): int
           },
-      "raft": {
-          "self_addr": validate_connect_address,
-          Optional("bind_addr"): validate_host_port_listen,
-          "partner_addrs": validate_host_port_list,
-          Optional("data_dir"): str,
-          Optional("password"): str
-          },
       "zookeeper": {
           "hosts": Or(comma_separated_host_port, [validate_host_port]),
           },
Index: patroni/tests/test_validator.py
===================================================================
--- patroni.orig/tests/test_validator.py
+++ patroni/tests/test_validator.py
@@ -33,21 +33,11 @@ config = {
     "etcd": {
         "hosts": "127.0.0.1:2379,127.0.0.1:2380"
     },
-    "etcd3": {
-        "url": "https://127.0.0.1:2379"
-    },
     "exhibitor": {
         "hosts": ["string"],
         "port": 4000,
         "pool_interval": 1000
     },
-    "raft": {
-        "self_addr": "127.0.0.1:2222",
-        "bind_addr": "0.0.0.0:2222",
-        "partner_addrs": ["127.0.0.1:2223", "127.0.0.1:2224"],
-        "data_dir": "/",
-        "password": "12345"
-    },
     "zookeeper": {
         "hosts":  "127.0.0.1:3379,127.0.0.1:3380"
     },
@@ -149,7 +139,7 @@ class TestValidator(unittest.TestCase):
     def test_complete_config(self, mock_out, mock_err):
         schema(config)
         output = mock_out.getvalue()
-        self.assertEqual(['postgresql.bin_dir', 'raft.bind_addr', 'raft.self_addr'], parse_output(output))
+        self.assertEqual(['postgresql.bin_dir'], parse_output(output))
 
     def test_bin_dir_is_file(self, mock_out, mock_err):
         files.append(config["postgresql"]["data_dir"])
@@ -161,8 +151,7 @@ class TestValidator(unittest.TestCase):
         schema(c)
         output = mock_out.getvalue()
         self.assertEqual(['etcd.hosts.1', 'etcd.hosts.2', 'kubernetes.pod_ip', 'postgresql.bin_dir',
-                          'postgresql.data_dir', 'raft.bind_addr', 'raft.self_addr',
-                          'restapi.connect_address'], parse_output(output))
+                          'postgresql.data_dir', 'restapi.connect_address'], parse_output(output))
 
     @patch('socket.inet_pton', Mock(), create=True)
     def test_bin_dir_is_empty(self, mock_out, mock_err):
@@ -178,8 +167,8 @@ class TestValidator(unittest.TestCase):
         with patch('patroni.validator.open', mock_open(read_data='9')):
             schema(c)
         output = mock_out.getvalue()
-        self.assertEqual(['consul.host', 'etcd.host', 'postgresql.bin_dir', 'postgresql.data_dir', 'postgresql.listen',
-                          'raft.bind_addr', 'raft.self_addr', 'restapi.connect_address'], parse_output(output))
+        self.assertEqual(['consul.host', 'etcd.host', 'postgresql.bin_dir', 'postgresql.data_dir',
+                          'postgresql.listen', 'restapi.connect_address'], parse_output(output))
 
     @patch('subprocess.check_output', Mock(return_value=b"postgres (PostgreSQL) 12.1"))
     def test_data_dir_contains_pg_version(self, mock_out, mock_err):
@@ -197,7 +186,7 @@ class TestValidator(unittest.TestCase):
         with patch('patroni.validator.open', mock_open(read_data='12')):
             schema(config)
         output = mock_out.getvalue()
-        self.assertEqual(['raft.bind_addr', 'raft.self_addr'], parse_output(output))
+        self.assertEqual([], parse_output(output))
 
     @patch('subprocess.check_output', Mock(return_value=b"postgres (PostgreSQL) 12.1"))
     def test_pg_version_missmatch(self, mock_out, mock_err):
@@ -212,8 +201,7 @@ class TestValidator(unittest.TestCase):
         with patch('patroni.validator.open', mock_open(read_data='11')):
             schema(c)
         output = mock_out.getvalue()
-        self.assertEqual(['etcd.hosts', 'postgresql.data_dir',
-                          'raft.bind_addr', 'raft.self_addr'], parse_output(output))
+        self.assertEqual(['etcd.hosts', 'postgresql.data_dir'], parse_output(output))
 
     @patch('subprocess.check_output', Mock(return_value=b"postgres (PostgreSQL) 12.1"))
     def test_pg_wal_doesnt_exist(self, mock_out, mock_err):
@@ -226,7 +214,7 @@ class TestValidator(unittest.TestCase):
         with patch('patroni.validator.open', mock_open(read_data='11')):
             schema(c)
         output = mock_out.getvalue()
-        self.assertEqual(['postgresql.data_dir', 'raft.bind_addr', 'raft.self_addr'], parse_output(output))
+        self.assertEqual(['postgresql.data_dir'], parse_output(output))
 
     def test_data_dir_is_empty_string(self, mock_out, mock_err):
         directories.append(config["postgresql"]["data_dir"])
@@ -238,5 +226,5 @@ class TestValidator(unittest.TestCase):
         c["postgresql"]["bin_dir"] = ""
         schema(c)
         output = mock_out.getvalue()
-        self.assertEqual(['kubernetes', 'postgresql.bin_dir', 'postgresql.data_dir',
-                          'postgresql.pg_hba', 'raft.bind_addr', 'raft.self_addr'], parse_output(output))
+        self.assertEqual(['kubernetes', 'postgresql.bin_dir',
+                          'postgresql.data_dir', 'postgresql.pg_hba'], parse_output(output))
