diff --git a/api/bases/ovn.openstack.org_ovncontrollers.yaml b/api/bases/ovn.openstack.org_ovncontrollers.yaml index 7f22612e..f2129afe 100644 --- a/api/bases/ovn.openstack.org_ovncontrollers.yaml +++ b/api/bases/ovn.openstack.org_ovncontrollers.yaml @@ -147,10 +147,20 @@ spec: description: Image used for the ovn-controller container (will be set to environmental default if empty) type: string + ovnLogLevel: + default: info + description: OVNLogLevel - Set log level off, emer, err, warn, info, + or dbg. Default is info. + type: string ovsContainerImage: description: Image used for the ovsdb-server and ovs-vswitchd containers (will be set to environmental default if empty) type: string + ovsLogLevel: + default: info + description: OVSLogLevel - Set log level off, emer, err, warn, info, + or dbg. Default is info. + type: string resources: description: |- Resources - Compute Resources required by this service (Limits/Requests). diff --git a/api/v1beta1/ovncontroller_types.go b/api/v1beta1/ovncontroller_types.go index 041935b7..f4a60ddb 100644 --- a/api/v1beta1/ovncontroller_types.go +++ b/api/v1beta1/ovncontroller_types.go @@ -94,6 +94,16 @@ type OVNControllerSpecCore struct { // If specified the IP address of this network is used as the OVNEncapIP. NetworkAttachment string `json:"networkAttachment"` + // +kubebuilder:validation:Optional + // +kubebuilder:default=info + // OVNLogLevel - Set log level off, emer, err, warn, info, or dbg. Default is info. + OVNLogLevel string `json:"ovnLogLevel,omitempty"` + + // +kubebuilder:validation:Optional + // +kubebuilder:default=info + // OVSLogLevel - Set log level off, emer, err, warn, info, or dbg. Default is info. + OVSLogLevel string `json:"ovsLogLevel,omitempty"` + // +kubebuilder:validation:Optional // +operator-sdk:csv:customresourcedefinitions:type=spec // TLS - Parameters related to TLS diff --git a/config/crd/bases/ovn.openstack.org_ovncontrollers.yaml b/config/crd/bases/ovn.openstack.org_ovncontrollers.yaml index 7f22612e..f2129afe 100644 --- a/config/crd/bases/ovn.openstack.org_ovncontrollers.yaml +++ b/config/crd/bases/ovn.openstack.org_ovncontrollers.yaml @@ -147,10 +147,20 @@ spec: description: Image used for the ovn-controller container (will be set to environmental default if empty) type: string + ovnLogLevel: + default: info + description: OVNLogLevel - Set log level off, emer, err, warn, info, + or dbg. Default is info. + type: string ovsContainerImage: description: Image used for the ovsdb-server and ovs-vswitchd containers (will be set to environmental default if empty) type: string + ovsLogLevel: + default: info + description: OVSLogLevel - Set log level off, emer, err, warn, info, + or dbg. Default is info. + type: string resources: description: |- Resources - Compute Resources required by this service (Limits/Requests). diff --git a/controllers/ovncontroller_controller.go b/controllers/ovncontroller_controller.go index 299bb03b..8c3643eb 100644 --- a/controllers/ovncontroller_controller.go +++ b/controllers/ovncontroller_controller.go @@ -943,6 +943,8 @@ func (r *OVNControllerReconciler) generateServiceConfigMaps( // Add additional ConfigMap for extra configuration scripts extraScriptsTemplateParameters := make(map[string]any) extraScriptsTemplateParameters["OVNEncapTos"] = instance.Spec.ExternalIDS.OvnEncapTos + extraScriptsTemplateParameters["OVSLogLevel"] = instance.Spec.OVSLogLevel + extraScriptsTemplateParameters["OVNLogLevel"] = instance.Spec.OVNLogLevel extraCms := []util.Template{ { diff --git a/pkg/ovncontroller/configjob.go b/pkg/ovncontroller/configjob.go index 77488f28..268eda5b 100644 --- a/pkg/ovncontroller/configjob.go +++ b/pkg/ovncontroller/configjob.go @@ -64,6 +64,8 @@ func ConfigJob( envVars["OVNAvailabilityZones"] = env.SetValue(strings.Join(instance.Spec.ExternalIDS.OvnAvailabilityZones, ":")) envVars["PhysicalNetworks"] = env.SetValue(getPhysicalNetworks(instance)) envVars["OVNHostName"] = env.DownwardAPI("spec.nodeName") + envVars["OVNLogLevel"] = env.SetValue(instance.Spec.OVNLogLevel) + envVars["OVSLogLevel"] = env.SetValue(instance.Spec.OVSLogLevel) for _, ovnPod := range ovnPods.Items { commands := []string{ diff --git a/templates/ovncontroller/config/configure-ovn.sh b/templates/ovncontroller/config/configure-ovn.sh index 240a4d7b..5af3b539 100755 --- a/templates/ovncontroller/config/configure-ovn.sh +++ b/templates/ovncontroller/config/configure-ovn.sh @@ -15,15 +15,30 @@ # under the License. # This script configures ovn-encap-tos setting in OVS external-ids -# It is only used when ovn-encap-tos is explicitly set to a non-default value +# It is used when ovn-encap-tos is explicitly set to a non-default value or +# when OVN or OVS log level values change. source $(dirname $0)/../container-scripts/functions OVNEncapTos={{.OVNEncapTos}} +OVSLogLevel={{.OVSLogLevel}} +OVNLogLevel={{.OVNLogLevel}} function configure_ovn_external_ids { ovs-vsctl set open . external-ids:ovn-encap-tos=${OVNEncapTos} } +function configure_log_level { + for svc in ovsdb-server ovs-vswitchd; do + ctl_path=$(find /var/run/openvswitch/ -maxdepth 1 -name "${svc}.*.ctl") + ovs-appctl -t ${ctl_path} vlog/set ${OVSLogLevel} + done + + ctl_path=$(find /var/run/ovn/ -maxdepth 1 -name "ovn-controller.*.ctl") + ovn-appctl -t "$ctl_path" vlog/set ${OVNLogLevel} +} + + wait_for_ovsdb_server configure_ovn_external_ids +configure_log_level