def test_ssh(self):
     self.shell.run_cmdline('/ssh generate')
     self.assertInSysOut('Key pair generated.')
     self.assertNotEqual(PillarManager.get('ceph-salt:ssh:private_key'), None)
     self.assertNotEqual(PillarManager.get('ceph-salt:ssh:public_key'), None)
 def test_no_admin_minion(self):
     PillarManager.set('ceph-salt:minions:admin', [])
     self.assertValidateConfig("No admin minion specified in config")
 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_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_no_ceph_container_image_path(self):
     PillarManager.reset('ceph-salt:container:images:ceph')
     self.assertValidateConfig(
         "No Ceph container image path specified in config")
Exemple #6
0
 def test_pillar_installed_top_without_base(self):
     self.fs.remove_object('/srv/pillar/ceph-salt.sls')
     self.fs.create_file('/srv/pillar/top.sls', contents='')
     self.assertFalse(PillarManager.pillar_installed())
     self.fs.create_file('/srv/pillar/ceph-salt.sls')
     self.fs.remove_object('/srv/pillar/top.sls')
 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")
 def test_no_bootstrap_mon_ip(self):
     PillarManager.reset('ceph-salt:bootstrap_mon_ip')
     self.assertEqual(validate_config([]), "No bootstrap Mon IP specified in config")
 def test_loopback_bootstrap_mon_ip(self):
     PillarManager.set('ceph-salt:bootstrap_mon_ip', '127.0.0.1')
     self.assertEqual(validate_config([]), "Mon IP cannot be the loopback interface IP")
 def test_no_bootstrap_minion(self):
     PillarManager.reset('ceph-salt:bootstrap_minion')
     self.assertEqual(validate_config([]), "No bootstrap minion specified in config")
     self.assertEqual(validate_config([{'hostname': 'node1'}]), None)
 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)
Exemple #12
0
 def tearDown(self):
     super(ConfigShellTest, self).tearDown()
     PillarManager.reload()
Exemple #13
0
 def test_cephadm_bootstrap_dashboard_password(self):
     default = PillarManager.get('ceph-salt:dashboard:password')
     self.assertValueOption('/cephadm_bootstrap/dashboard/password',
                            'ceph-salt:dashboard:password', 'mypassword',
                            default)
 def tearDown(self):
     super(ConfigShellTest, self).tearDown()
     PillarManager.reload()
     for minion in self.salt_env.minions:
         self.fs.remove_object('{}/{}'.format(self.pki_minions_fs_path(), minion))
Exemple #15
0
 def test_pillar_installed_no_top2(self):
     self.assertFalse(PillarManager.pillar_installed())
 def test_no_time_server_subnet(self):
     PillarManager.reset('ceph-salt:time_server:subnet')
     self.assertEqual(validate_config([]), "No time server subnet specified in config")
Exemple #17
0
 def tearDown(self):
     super(PillarManagerTest, self).tearDown()
     PillarManager.reload()
 def test_no_external_time_servers(self):
     PillarManager.reset('ceph-salt:time_server:external_time_servers')
     self.assertEqual(validate_config([]), "No external time servers specified in config")
Exemple #19
0
 def test_pillar_install(self):
     self.fs.remove_object('/srv/pillar/ceph-salt.sls')
     self.assertFalse(PillarManager.pillar_installed())
     PillarManager.install_pillar()
     self.assertTrue(PillarManager.pillar_installed())
 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 tearDown(self):
     super(ValidateConfigTest, self).tearDown()
     PillarManager.reload()
 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_no_bootstrap_minion(self):
     PillarManager.reset('ceph-salt:bootstrap_minion')
     self.assertValidateConfig("No bootstrap minion specified in config")
     self.assertValidateConfig(None, deployed=True)
Exemple #24
0
 def test_pillar_install3(self):
     self.fs.remove_object('/srv/pillar/ceph-salt.sls')
     self.fs.create_file('/srv/pillar/top.sls', contents='')
     self.assertFalse(PillarManager.pillar_installed())
     PillarManager.install_pillar()
     self.assertTrue(PillarManager.pillar_installed())
 def test_ceph_container_image_relative_path(self):
     PillarManager.set('ceph-salt:container:images:ceph',
                       'ceph/ceph:v15.2.2')
     self.assertValidateConfig(
         "A relative image path was given, but only absolute image "
         "paths are supported")
Exemple #26
0
 def test_pillar_get(self):
     PillarManager.set('ceph-salt:test', 'some text')
     val = PillarManager.get('ceph-salt:test')
     self.assertEqual(val, 'some text')
    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_hosts',
                          ['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:container:registries_enabled', True)
        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.2:5000/docker2.io",
                              'prefix': "docker2.io"
                          }])
        PillarManager.set('ceph-salt:container:images:ceph',
                          'docker.io/ceph/daemon-base:latest')
        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-----""")
Exemple #28
0
 def test_pillar_installed_no_top(self):
     self.fs.remove_object('/srv/pillar/ceph-salt.sls')
     self.assertFalse(PillarManager.pillar_installed())
     self.fs.create_file('/srv/pillar/ceph-salt.sls')
 def test_ssh_no_private_key(self):
     PillarManager.reset('ceph-salt:ssh:private_key')
     self.assertValidateConfig("No SSH private key specified in config")
Exemple #30
0
 def test_updates_reboot_not_set(self):
     PillarManager.reset('ceph-salt:updates:reboot')
     self.assertEqual(validate_config([]),
                      "'ceph-salt:updates:reboot' must be of type Boolean")