Example #1
0
 def test_pillar_reset(self):
     PillarManager.set('ceph-salt:test', 'some text')
     val = PillarManager.get('ceph-salt:test')
     self.assertEqual(val, 'some text')
     PillarManager.reset('ceph-salt:test')
     val = PillarManager.get('ceph-salt:test')
     self.assertIsNone(val)
 def test_ceph_container_image_relative_path(self):
     PillarManager.set('ceph-salt:container:images:ceph',
                       'ceph/ceph:v15.2.2')
     self.assertEqual(
         validate_config(False),
         "A relative image path was given, but only absolute image paths "
         "are supported")
Example #3
0
 def create_valid_config(cls):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node1.ceph.com')
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.201')
     PillarManager.set('ceph-salt:minions:all', ['node1', 'node2'])
     PillarManager.set('ceph-salt:minions:admin', ['node1'])
     PillarManager.set('ceph-salt:container:images:ceph',
                       'docker.io/ceph/daemon-base:latest')
    def test_ssh_invalid_key_pair(self):
        public_key = """ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrI0b980egkmfqFQcsYWrqb2TR3QX/dL+\
HA5UDa0RFLiOW0xh0liHqd02NZ3j4AoQsh6MSanrROAC2g/cYNDeLo/DR3NXTOPsIhwOkGCncFaOkraVZ/+ZoLsh\
8FFXPVz761PgbuzUmz5cQ+IAVSMS5YColvPaynLNtsDQqGwdiL9jB411HbiNnC0oiqU4FpPTa7zFq530WxrtLwee\
0P8s0ybiomlBY9m+tYNZJypz4lTPfHa9XHWRn5nxFiqiR5yswRRXeZDAEPBXgN9maIC1Rj2mmDVGpr4v3gKf9TBD\
PBVw2pLCZsH5ol3VJ1/DETsGRMzFubFeTUNOC3MzhhG+V"""
        PillarManager.set('ceph-salt:ssh:public_key', public_key)
        self.assertEqual(validate_config(False), "Invalid SSH key pair")
 def test_latency_without_cephadm_role(self):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node2.ceph.com')
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.202')
     PillarManager.set('ceph-salt:minions:admin', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:cephadm', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:latency', ['node3.ceph.com'])
     self.assertValidateConfig("Minion 'node3.ceph.com' has 'latency' role "
                               "but not 'cephadm' role")
Example #6
0
 def test_pillar_set(self):
     PillarManager.set('ceph-salt:test:enabled', True)
     file_path = os.path.join(self.pillar_fs_path(),
                              PillarManager.PILLAR_FILE)
     self.assertYamlEqual(file_path,
                          {'ceph-salt': {
                              'test': {
                                  'enabled': True
                              }
                          }})
 def test_time_server_not_a_minion(self):
     not_minion_err = ('Time server is not a minion: {} '
                       'setting will not have any effect')
     PillarManager.set('ceph-salt:time_server:server_hosts',
                       ['foo.example.com'])
     PillarManager.reset('ceph-salt:time_server:external_time_servers')
     self.assertValidateConfig(not_minion_err.format('time server subnet'))
     PillarManager.reset('ceph-salt:time_server:subnet')
     PillarManager.set('ceph-salt:time_server:external_time_servers',
                       ['pool.ntp.org'])
     self.assertValidateConfig(
         not_minion_err.format('external time servers'))
 def test_duplicated_registries(self):
     PillarManager.set('ceph-salt:container:registries',
                       [{
                           'insecure': True,
                           'location': "172.17.0.1:5000/docker.io",
                           'prefix': "docker.io"
                       }, {
                           'insecure': False,
                           'location': "172.17.0.1:5000/docker.io",
                           'prefix': "docker.io"
                       }])
     self.assertValidateConfig("Registry '172.17.0.1:5000/docker.io' is "
                               "defined multiple times with conflicting "
                               "'insecure' setting")
 def test_incomplete_registry_auth(self):
     PillarManager.set('ceph-salt:container:auth:username', 'testuser')
     self.assertValidateConfig("Registry auth configuration is incomplete")
     PillarManager.set('ceph-salt:container:auth:password', 'testpassword')
     self.assertValidateConfig("Registry auth configuration is incomplete")
     PillarManager.set('ceph-salt:container:auth:registry',
                       '172.17.0.1:5000')
     self.assertValidateConfig(None)
 def test_loopback_bootstrap_mon_ip(self):
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '127.0.0.1')
     self.assertEqual(validate_config(False),
                      "Mon IP cannot be the loopback interface IP")
Example #11
0
 def test_admin_not_cluster_minion(self):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node3.ceph.com')
     PillarManager.set('ceph-salt:minions:admin', ['node3.ceph.com'])
     self.assertEqual(validate_config([]), "One or more Admin nodes are not cluster minions")
 def test_bootstrap_minion_is_not_admin(self):
     PillarManager.set('ceph-salt:minions:admin', [])
     self.assertEqual(validate_config(False),
                      "Bootstrap minion must be 'Admin'")
     self.assertEqual(validate_config(True), None)
    def create_valid_config(cls):
        PillarManager.set('ceph-salt:dashboard:username', 'admin1')
        PillarManager.set('ceph-salt:dashboard:password', 'admin2')
        PillarManager.set('ceph-salt:dashboard:password_update_required', True)
        PillarManager.set(
            'ceph-salt:dashboard:ssl_certificate',
            """-----BEGIN CERTIFICATE-----
MIIDNTCCAh2gAwIBAgIUNBWaDwDpsU7OWD1iNVDu9576ORgwDQYJKoZIhvcNAQEL
BQAwKjELMAkGA1UECgwCSVQxGzAZBgNVBAMMEmNlcGgtbWdyLWRhc2hib2FyZDAe
Fw0yMDA1MjYxNDIwMTZaFw0zMDA1MjQxNDIwMTZaMCoxCzAJBgNVBAoMAklUMRsw
GQYDVQQDDBJjZXBoLW1nci1kYXNoYm9hcmQwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQCz1rqRFF4cu6by4a3bpxdt9nmAtf8yOhhUPs5dv5APvqg6E5o2
Uv5n+pR8gRpyBjVfUqEM6BAvXrLuVjXbiaJkRzbhR9YTpsVmLft6RyzyqxP9q3EN
W7QCSGwfOJJjdZ9M0iEvrAJ2C66dpDoTI65ewJYgW77COyglhj8FruiXi5q+W25V
+EbZ4aoOqbwiXyTRodPgL42WnKXSloTa1ojzKFMgaUZWjwswX6pf4qGhuIZZVuvx
P+7lpsag84mF1oZhijiKTJ9/gCmmyhEr3ZZEKxCsIXXQiVFdimbSxLXQBE9iX2EU
s1b+4iRxCsf5y7VW734svxyj++a8p4jquHc3AgMBAAGjUzBRMB0GA1UdDgQWBBSy
+awnKYIkZJnTuE65jKimjSGQGjAfBgNVHSMEGDAWgBSy+awnKYIkZJnTuE65jKim
jSGQGjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAf0wm2vNLy
1O97iFT0ZERnOY8U3LNebZwq2I0luSlrr02gWYK/m5CdQw1EHxERjuuuOOVDazGp
20qHJczzNowySjF1vU7wc2fzK89RQpXXlmLYl/eaH5bVCdyQ6yC/Mpka65LAqnVi
XseHg+sXSkWPftmajz2wIAsP2V1b4D3M5dR1+s6ksWLtABkoVZHW726J6wc9Cc8Q
r1BG2ZGm3Br8nfeaIY3M1A/tRTj+Y44ab1ZaFIr8sT8VwH1/TPfms1NzoydwGEkc
vmDVPjWIAnF9dV6HJ8kHOcndZyemx2yxFUI1f1DNchRxn9UO1FOITCbeX/mz8TAr
ZYUvxW5OQp8g
-----END CERTIFICATE-----""")
        PillarManager.set(
            'ceph-salt:dashboard:ssl_certificate_key',
            """-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCz1rqRFF4cu6by
4a3bpxdt9nmAtf8yOhhUPs5dv5APvqg6E5o2Uv5n+pR8gRpyBjVfUqEM6BAvXrLu
VjXbiaJkRzbhR9YTpsVmLft6RyzyqxP9q3ENW7QCSGwfOJJjdZ9M0iEvrAJ2C66d
pDoTI65ewJYgW77COyglhj8FruiXi5q+W25V+EbZ4aoOqbwiXyTRodPgL42WnKXS
loTa1ojzKFMgaUZWjwswX6pf4qGhuIZZVuvxP+7lpsag84mF1oZhijiKTJ9/gCmm
yhEr3ZZEKxCsIXXQiVFdimbSxLXQBE9iX2EUs1b+4iRxCsf5y7VW734svxyj++a8
p4jquHc3AgMBAAECggEBAKstsAYaWf6Fi8LSl7dlU8LiggLGuXNoovHFmo7XoVur
QduN/xLIaso0VRQxmyd/y1vBffSYC5fbTvvX6Ynfd0h2FMHYq+emrWy2RhG9IAaY
Wv3xKzno2O33W5tYMNclBY2M0fPbibgtJHd+85x2MSqVrBB+45Nj1bHqF6DkPRbJ
PCoYVC11K3TOzf+x9ihOxBmvWEUnNuIjwvWoMK9KfhbiMYqIPwg3VIbrrXeebzJB
hs4wYssHnLK85LVmPXzgUODLqCR9oaaVh+BdkEepEGB/dh7fylMY8Za6IZ098Cy3
JQiVfwixRQuKg0ViyFMsgI6mZFIpbVPmps/4XZtdukECgYEA67LI0/08IHh3sFDZ
eYb5Yva01Kw1/Lwi1MgUSc9aeYU7vJcagVARiTcNtkWUqGIZ3uSOdcOpFSfhLntL
BC8gr7btpxiKmhVHme+dxs1lc8AEEwm5N6u6gS92rQxCnAW1/7s2eFGvGu43G4k7
/JpFeGV20+CJhLO4uexJQdsflOECgYEAw1Q5fMvCY1jMiq+kqXB0m3ZPjNcKwa3c
Uvhdebl7QirauO55zMaLDBhNlu7CaXGmhVixENyGZCpkrUSquqrTtQTRxjsqcS4g
yDFQIWyiXOg2T9YmAJU7EalrFyK6EimmA8hj62ZWwEdIkZNBtvcN5iBetGHxtdd3
nWEF2rzd9xcCgYAvgjgM0ux9twqZFZLgdh5qnkPQ4m13Zgy3SyUbw5n/CKYD24lS
K2t9dwViih/u2OdSEEvO3QOF6iXvkpaKX119TagVmFLHwCZQlwX8foZGkJvBoqIc
4JaVV5XaR7BddqE6zOer1PswuHePK1hWEFqUbA9JoebWQsunXkNd7OcuwQKBgEyf
xLF1CTuJwSuCfZjOeZ/myIwaa6jQuEaAEcNHhNfPEeBMBNHU7QUAn6de4DsXD1ju
Ev/nUn0GuFnUPxldHBG940DdQugFTWzbE3EZOZQyr+OfwWanI/XovQ7lW5L2bZ68
RJ46ljt1ez1IRBYvUm99MUmXxocsEEtXnUFSp8xfAoGAVr/QnNlwNoLY8LTKgfG1
BJGDcEjQZ0KwFnaPfCMTXwnWaMHfGA9k7VrDZwxpTfGQ0b2cl+tCk7by/SCmDW6k
RpDBiJHfMFDSRysZrjmuULRJvcrItRg2r3TIVuB8Wxze7Ugyb9G4hH7ZIW1y9QlG
SCzirUzUKN2oge2WieNI7MQ=
-----END PRIVATE KEY-----""")
        PillarManager.set('ceph-salt:bootstrap_minion', 'node1.ceph.com')
        PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.201')
        PillarManager.set('ceph-salt:time_server:enabled', True)
        PillarManager.set('ceph-salt:time_server:server_host',
                          'node1.ceph.com')
        PillarManager.set('ceph-salt:time_server:external_time_servers',
                          ['pool.ntp.org'])
        PillarManager.set('ceph-salt:time_server:subnet', '10.20.188.0/24')
        PillarManager.set(
            'ceph-salt:minions:all',
            ['node1.ceph.com', 'node2.ceph.com', 'node3.ceph.com'])
        PillarManager.set('ceph-salt:minions:cephadm',
                          ['node1.ceph.com', 'node2.ceph.com'])
        PillarManager.set('ceph-salt:minions:admin', ['node1.ceph.com'])
        PillarManager.set('ceph-salt:updates:enabled', True)
        PillarManager.set('ceph-salt:updates:reboot', True)
        PillarManager.set('ceph-salt:container:registries_enabled', True)
        PillarManager.set('ceph-salt:container:images:ceph',
                          'docker.io/ceph/daemon-base:latest')
        PillarManager.set('ceph-salt:ssh:user', 'root')
        PillarManager.set(
            'ceph-salt:ssh:public_key',
            """ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ\
ClF4wYDBN6wC9Amp4xouZTDbOqZdkXxUezgbFrG1Nd+YtK7rF3sMdcE7ypKWkxwq3a/ZdWxnlAgQaCq2onXVo02/HhXrkaOf\
fH2GKzhEIw6sW0FnZ+y6XpBh6nvlD87mD8mrQbnhsjFjX+odS8gmNJOZOBxHdeWy86PHUesjttAUYwi42fWB6LkJrz74nbkp\
ueqi4w3EjuV3zSsQoAnVkCNO1ShlQYi1LeMB9EmejaGXBugAC+XsK0hn2kabRTa3ido6BbCXJDH+dkFnBKkiGQZY1Gl7+lJZ\
PkBcJB7nz233ba8bgrT0uSSu3fyWnnobKjnuas9lakvRedwKIy8LjZ""")
        PillarManager.set(
            'ceph-salt:ssh:private_key', """-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEApReMGAwTesAvQJqeMaLmUw2zqmXZF8VHs4GxaxtTXfmLSu6x
d7DHXBO8qSlpMcKt2v2XVsZ5QIEGgqtqJ11aNNvx4V65Gjn3x9his4RCMOrFtBZ2
fsul6QYep75Q/O5g/Jq0G54bIxY1/qHUvIJjSTmTgcR3XlsvOjx1HrI7bQFGMIuN
n1gei5Ca8++J25KbnqouMNxI7ld80rEKAJ1ZAjTtUoZUGItS3jAfRJno2hlwboAA
vl7CtIZ9pGm0U2t4naOgWwlyQx/nZBZwSpIhkGWNRpe/pSWT5AXCQe589t922vG4
K09Lkkrt38lp56Gyo57mrPZWpL0XncCiMvC42QIDAQABAoIBACnvVEebcatBe/82
By7miQjZtyR2YHGYTAE91Vo2g7OgOpCbFvsnLUynOsnhWfYo1E6HEdUZ7xzCaWvx
rLI5FTvODp/Hls8hoF3kChY9Zy7Tw8pd1lWY1xjc1BaZ0iqdRoeDqHJHc+8yqh52
7vm/SQcFmAFjbUrLcLCjQMC+Vzf1rRfOfoTM9snkuBcd0eOjvivGAQSeF4S6FPlV
XjuVPMqkXYxzVv+AUbMzwr4iPcDUJ09qx+w/S2f/h7SBgt9Jsq4dvYtQfKwS2XSP
QSE0cK7tCjVE1t0sh/2+j1ppl8LHiYS3fIeLAkCnnm9jhVPddtgImp9GlL+qx70Y
40DDbn0CgYEAvSKahj8hswDnH433jf8NQEcjcb3CHqfUjmZrG/qLi1uMsaUp7ICU
wMc6MCgGcMFsC11g2PvGIvwaACBIpjWM/7cGxnomYWYeOjluhQdb1PB+KYX5mSPL
RRYq0kSNiJeqUFGj+9xfoVFGfpYIdtCUqUy9eGVyhYTLH0vxJz91l3sCgYEA33Tz
YG0Xj/1zvFPO+GD+cn5Sm4AEpiYxVuk7EGj1jEPVtA9l+nUUpbBV0U92a+pzuX/f
q0n7Zy+THAC0Q6qdzsKHcy6vPeHECF49G29qXxaQ3sHop8316rAqu7BpdL4xn9XT
Qp7g/1ivrzMWRZpt/BtEnBe7XMUZLZNzPJ0LlrsCgYEAoyiu1RCxKZKlz3rRDBXy
gHjeAskIJRnzK8T+sWw55UZc4QLyX6usp4E2mURuCedSJZuwaH8KNjP02hb/lSKt
OAvUNHQ7l9pYSTIyPWBTwCaXL4r7/zf5quesmSe6URNFQXSsWiGJ/cf3YExdkOHu
3P3ulWYunTApah5BMvJzpvECgYEAgIeEdbJKG0htiaWrJrKjqLeATHEWO3s8ZgFB
N+8nTca25Rr2TVmKxsLmmb5bHzd72Pb0cFHdiTyUIUdGaKV6n7LEtjvkEHQLjcSm
4WD0jj0slvRyHhMZoCQ0cEDIZ53+bTFQksFQKY+ZfeykouRw3tHQZPhBjNrR4KUv
Y23xfIECgYBDFQLNOS7Tz0+TGZaAOce7oRV5HWyW+AFrpyxavw+YbE3s37IDvcdU
EwiXg1NW1KlU9Q2bjWRXJ0tPQO+EyRQ0pn7yXA53xhBxVYW4T4KAqK6AFsiJQncf
+x5J3qK6+KAfo07TBNG1aIBQfY346EaUc20aRHFfnad9EF4KAmgszA==
-----END RSA PRIVATE KEY-----""")
Example #14
0
 def create_valid_config(cls):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node1.ceph.com')
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.201')
     PillarManager.set('ceph-salt:time_server:enabled', True)
     PillarManager.set('ceph-salt:time_server:server_host', 'node1.ceph.com')
     PillarManager.set('ceph-salt:time_server:external_time_servers', ['pool.ntp.org'])
     PillarManager.set('ceph-salt:time_server:subnet', '10.20.188.0/24')
     PillarManager.set('ceph-salt:minions:all', ['node1.ceph.com', 'node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:admin', ['node1.ceph.com'])
     PillarManager.set('ceph-salt:container:images:ceph', 'docker.io/ceph/daemon-base:latest')
 def test_admin_without_cephadm_role(self):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node3.ceph.com')
     PillarManager.set('ceph-salt:minions:admin', ['node3.ceph.com'])
     self.assertEqual(
         validate_config(False),
         "Minion 'node3.ceph.com' has 'admin' role but not 'cephadm' role")
 def test_cephadm_not_cluster_minion(self):
     PillarManager.set('ceph-salt:minions:cephadm', ['node4.ceph.com'])
     self.assertEqual(
         validate_config(False),
         "Minion 'node4.ceph.com' has 'cephadm' role but is not a cluster minion"
     )
 def test_not_found_bootstrap_mon_ip(self):
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.101')
     self.assertValidateConfig(
         "Mon IP '10.20.188.101' is not an IP of the bootstrap minion "
         "'node1.ceph.com'")
 def test_bootstrap_minion_is_not_cephadm(self):
     PillarManager.set('ceph-salt:minions:admin', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:cephadm', ['node2.ceph.com'])
     self.assertValidateConfig("Bootstrap minion must have 'cephadm' role")
     self.assertValidateConfig(None, deployed=True)
 def test_no_admin_minion(self):
     PillarManager.set('ceph-salt:minions:admin', [])
     self.assertValidateConfig("No admin minion specified in config")
Example #20
0
 def test_bootstrap_minion_is_not_admin(self):
     PillarManager.set('ceph-salt:minions:admin', [])
     self.assertEqual(validate_config([]), "Bootstrap minion must be 'Admin'")
     self.assertEqual(validate_config([{'hostname': 'node1'}]), None)
 def test_latency_and_throughput_roles(self):
     PillarManager.set('ceph-salt:bootstrap_minion', 'node2.ceph.com')
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '10.20.188.202')
     PillarManager.set('ceph-salt:minions:admin', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:cephadm', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:latency', ['node2.ceph.com'])
     PillarManager.set('ceph-salt:minions:throughput', ['node2.ceph.com'])
     self.assertValidateConfig("Minion 'node2.ceph.com' has both 'latency' "
                               "and 'throughput' roles")
 def test_cephadm_not_cluster_minion(self):
     PillarManager.set('ceph-salt:minions:cephadm',
                       ['node1.ceph.com', 'node4.ceph.com'])
     self.assertValidateConfig("Minion 'node4.ceph.com' has 'cephadm' role "
                               "but is not a cluster minion")