def enable_ovs_dpdk(): '''Enables the DPDK variant of ovs-vswitchd and restarts it''' subprocess.check_call(UPDATE_ALTERNATIVES + [OVS_DPDK_BIN]) values_changed = [] if ovs_has_late_dpdk_init(): dpdk_context = OVSDPDKDeviceContext() other_config = OrderedDict([ ('dpdk-lcore-mask', dpdk_context.cpu_mask()), ('dpdk-socket-mem', dpdk_context.socket_memory()), ('dpdk-init', 'true'), ]) if not ovs_vhostuser_client(): other_config['dpdk-extra'] = ( '--vhost-owner libvirt-qemu:kvm --vhost-perm 0660 ' + dpdk_context.pci_whitelist()) else: other_config['dpdk-extra'] = (dpdk_context.pci_whitelist()) other_config['dpdk-init'] = 'true' for column, value in other_config.items(): values_changed.append( set_Open_vSwitch_column_value('other_config:{}'.format(column), value)) if ((values_changed and any(values_changed)) and not is_unit_paused_set()): deferrable_svc_restart('openvswitch-switch', reason='DPDK Config changed')
def nm_changed(): CONFIGS.write_all() if relation_get('ca_cert'): ca_crt = b64decode(relation_get('ca_cert')) install_ca_cert(ca_crt) if config('ha-legacy-mode'): cache_env_data() # Disable nova metadata if possible, if disable_nova_metadata(): remove_legacy_nova_metadata() else: # NOTE: nova-api-metadata needs to be restarted # once the nova-conductor is up and running # on the nova-cc units. restart_nonce = relation_get('restart_trigger') if restart_nonce is not None: db = kv() previous_nonce = db.get('restart_nonce') if previous_nonce != restart_nonce: if not is_unit_paused_set(): deferrable_svc_restart('nova-api-metadata', 'Restart trigger received') db.set('restart_nonce', restart_nonce) db.flush() # LP: #1812813 update_nrpe_config()
def enable_hw_offload(): '''Enable hardware offload support in Open vSwitch''' values_changed = [ set_Open_vSwitch_column_value('other_config:hw-offload', 'true'), set_Open_vSwitch_column_value('other_config:max-idle', '30000') ] if ((values_changed and any(values_changed)) and not is_unit_paused_set()): deferrable_svc_restart('openvswitch-switch', reason='Hardware offload config changed')
def upgrade_charm(): install() 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(): deferrable_svc_restart(s, 'Package purge detected') config_changed() update_legacy_ha_files(force=True) # Install systemd overrides to remove service startup race between # n-gateway and n-cloud-controller services. install_systemd_override()
def test_deferrable_svc_restart(self, is_restart_permitted, service_restart, save_event, time): time.return_value = 123 is_restart_permitted.return_value = True deferred_events.deferrable_svc_restart('svcA', reason='ReasonA') service_restart.assert_called_once_with('svcA') service_restart.reset_mock() is_restart_permitted.return_value = False deferred_events.deferrable_svc_restart('svcA', reason='ReasonA') self.assertFalse(service_restart.called) save_event.assert_called_once_with( deferred_events.ServiceEvent(timestamp=123, service='svcA', reason='ReasonA', action='restart'))