def upgrade_charm(): apt_install(filter_installed_packages(determine_packages()), fatal=True) # NOTE: ensure psutil install for hugepages configuration status_set('maintenance', 'Installing apt packages') apt_install(filter_installed_packages(['python-psutil'])) packages_removed = remove_old_packages() if packages_removed and not is_unit_paused_set(): log("Package purge detected, restarting services", "INFO") for s in services(): service_restart(s) for r_id in relation_ids('amqp'): amqp_joined(relation_id=r_id) if is_relation_made('nrpe-external-master'): update_nrpe_config() # Fix previously wrongly created path permissions # LP: https://bugs.launchpad.net/charm-cinder-ceph/+bug/1779676 asok_path = '/var/run/ceph/' gid = grp.getgrnam("kvm").gr_gid if gid and os.path.isdir(asok_path) and gid != os.stat(asok_path).st_gid: log("{} not owned by group 'kvm', fixing permissions." .format(asok_path)) shutil.chown(asok_path, group='kvm')
def test_determine_packages_metadata(self, net_man, n_plugin, en_meta): en_meta.return_value = (True, None) net_man.return_value = 'bob' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() self.assertTrue('nova-api-metadata' in result)
def upgrade_charm(): apt_install(filter_installed_packages(determine_packages()), fatal=True) # NOTE: ensure psutil install for hugepages configuration status_set('maintenance', 'Installing apt packages') apt_install(filter_installed_packages(['python-psutil'])) packages_removed = remove_old_packages() if packages_removed and not is_unit_paused_set(): log("Package purge detected, restarting services", "INFO") for s in services(): service_restart(s) for r_id in relation_ids('amqp'): amqp_joined(relation_id=r_id) if is_relation_made('nrpe-external-master'): update_nrpe_config() # Fix previously wrongly created path permissions # LP: https://bugs.launchpad.net/charm-cinder-ceph/+bug/1779676 asok_path = '/var/run/ceph/' gid = grp.getgrnam("kvm").gr_gid if gid and os.path.isdir(asok_path) and gid != os.stat(asok_path).st_gid: log("{} not owned by group 'kvm', fixing permissions.".format( asok_path)) shutil.chown(asok_path, group='kvm')
def test_determine_packages_quantum(self, net_man, n_plugin): self.neutron_plugin_attribute.return_value = OVS_PKGS net_man.return_value = 'quantum' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + OVS_PKGS + ['nova-compute-kvm'] self.assertEquals(ex, result)
def test_determine_packages_ironic(self, en_meta): self.os_release.return_value = 'victoria' self.test_config.set('virt-type', 'ironic') en_meta.return_value = (False, None) self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-ironic'] self.assertTrue(ex.sort() == result.sort())
def install(): status_set('maintenance', 'Executing pre-install') execd_preinstall() configure_installation_source(config('openstack-origin')) status_set('maintenance', 'Installing apt packages') apt_update() apt_install(determine_packages(), fatal=True)
def test_determine_packages_no_multipath(self, net_man, n_plugin, en_meta): self.os_release.return_value = 'ocata' en_meta.return_value = (False, None) net_man.return_value = 'bob' self.test_config.set('use-multipath', False) self.relation_ids.return_value = [] result = utils.determine_packages() for pkg in utils.MULTIPATH_PACKAGES: self.assertFalse(pkg in result)
def test_determine_packages_metadata(self, git_requested, net_man, n_plugin, en_meta): git_requested.return_value = False en_meta.return_value = (True, None) net_man.return_value = 'bob' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() self.assertTrue('nova-api-metadata' in result)
def test_determine_packages_metadata(self, net_man, n_plugin, en_meta): self.os_release.return_value = 'ocata' en_meta.return_value = (True, None) net_man.return_value = 'bob' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() self.assertTrue('nova-api-metadata' in result)
def test_determine_packages_neutron(self, git_requested, net_man, n_plugin, en_meta): git_requested.return_value = False en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertEquals(ex, result)
def test_determine_packages_nova_network(self, net_man): net_man.return_value = 'flatdhcpmanager' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + [ 'nova-api', 'nova-network', 'nova-compute-kvm' ] self.assertEquals(ex, result)
def test_determine_packages_neutron(self, machine, net_man, n_plugin, en_meta): en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertTrue(ex == result)
def test_determine_packages_neutron_ceph(self, machine, net_man, n_plugin, en_meta): en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = ['ceph:0'] result = utils.determine_packages() ex = (utils.BASE_PACKAGES + ['ceph-common', 'nova-compute-kvm']) self.assertEqual(ex, result)
def test_determine_packages_nova_network_ocata(self, machine, net_man, en_meta): self.os_release.return_value = 'ocata' en_meta.return_value = (False, None) net_man.return_value = 'flatdhcpmanager' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertTrue(ex == result)
def test_determine_packages_neutron(self, git_requested, net_man, n_plugin, en_meta): git_requested.return_value = False en_meta.return_value = False self.neutron_plugin_attribute.return_value = OVS_PKGS net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + OVS_PKGS_FLAT + ['nova-compute-kvm'] self.assertEquals(ex, result)
def test_determine_packages_neutron_aarch64_trusty(self, machine, net_man, n_plugin, en_meta): self.lsb_release.return_value = {'DISTRIB_CODENAME': 'trusty'} en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'aarch64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertEqual(ex, result)
def test_determine_packages_neutron_ceph(self, machine, git_requested, net_man, n_plugin, en_meta): git_requested.return_value = False en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = ['ceph:0'] result = utils.determine_packages() ex = (utils.BASE_PACKAGES + ['ceph-common', 'nova-compute-kvm']) self.assertEqual(ex, result)
def test_determine_packages_neutron(self, machine, net_man, n_plugin, en_meta): self.os_release.return_value = 'ocata' en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertTrue(ex == result)
def test_determine_packages_nova_network(self, git_requested, net_man, en_meta): git_requested.return_value = False en_meta.return_value = (False, None) net_man.return_value = 'flatdhcpmanager' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + [ 'nova-api', 'nova-network', 'nova-compute-kvm' ] self.assertEquals(ex, result)
def test_determine_packages_neutron_rocky(self, machine, net_man, n_plugin, en_meta): self.os_release.return_value = 'rocky' en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = ([p for p in utils.BASE_PACKAGES if not p.startswith('python-')] + ['nova-compute-kvm'] + utils.PY3_PACKAGES) self.assertEqual(ex, result)
def test_determine_packages_neutron_aarch64_xenial(self, machine, net_man, n_plugin, en_meta): self.os_release.return_value = 'ocata' self.lsb_release.return_value = {'DISTRIB_CODENAME': 'xenial'} en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'aarch64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm', 'qemu-efi'] self.assertTrue(ex == result)
def test_determine_packages_quantum_ceph(self, git_requested, net_man, n_plugin, en_meta, leg_mode): git_requested.return_value = False en_meta.return_value = False leg_mode.return_value = True self.neutron_plugin_attribute.return_value = OVS_PKGS net_man.return_value = 'quantum' n_plugin.return_value = 'ovs' self.relation_ids.return_value = ['ceph:0'] result = utils.determine_packages() ex = (utils.BASE_PACKAGES + OVS_PKGS_FLAT + ['ceph-common', 'nova-compute-kvm']) self.assertEquals(ex, result)
def test_determine_packages_nova_network(self, machine, net_man, en_meta): self.os_release.return_value = 'icehouse' en_meta.return_value = (False, None) net_man.return_value = 'flatdhcpmanager' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + [ 'nova-api', 'nova-network', 'nova-compute-kvm' ] self.assertTrue(ex == result)
def test_determine_packages_nova_network_ocata(self, machine, git_requested, net_man, en_meta): self.os_release.return_value = 'ocata' git_requested.return_value = False en_meta.return_value = (False, None) net_man.return_value = 'flatdhcpmanager' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + [ 'nova-compute-kvm' ] self.assertEqual(ex, result)
def test_determine_packages_neutron_aarch64_trusty(self, machine, net_man, n_plugin, en_meta): self.os_release.return_value = 'ocata' self.lsb_release.return_value = { 'DISTRIB_CODENAME': 'trusty' } en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'aarch64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm'] self.assertEqual(ex, result)
def test_determine_packages_neutron_aarch64_xenial(self, machine, git_requested, net_man, n_plugin, en_meta): self.lsb_release.return_value = { 'DISTRIB_CODENAME': 'xenial' } git_requested.return_value = False en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'aarch64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = utils.BASE_PACKAGES + ['nova-compute-kvm', 'qemu-efi'] self.assertEqual(ex, result)
def test_determine_packages_neutron_rocky(self, machine, net_man, n_plugin, en_meta): self.os_release.return_value = 'rocky' en_meta.return_value = (False, None) net_man.return_value = 'neutron' n_plugin.return_value = 'ovs' machine.return_value = 'x86_64' self.relation_ids.return_value = [] result = utils.determine_packages() ex = ( [p for p in utils.BASE_PACKAGES if not p.startswith('python-')] + ['nova-compute-kvm'] + utils.PY3_PACKAGES + ['python3-ceilometer', 'python3-neutron'] ) self.assertEqual(ex, result)
def install(): status_set('maintenance', 'Executing pre-install') execd_preinstall() configure_installation_source(config('openstack-origin')) status_set('maintenance', 'Installing apt packages') apt_update() apt_install(determine_packages(), fatal=True) # Start migration to agent registration with FQDNs for newly installed # units with OpenStack release Stein or newer. release = os_release('nova-common') if CompareOpenStackReleases(release) >= 'stein': db = kv() db.set(USE_FQDN_KEY, True) db.flush() install_vaultlocker()
def install(): execd_preinstall() configure_installation_source(config('openstack-origin')) apt_update() apt_install(determine_packages(), fatal=True)