Skip to content

Commit

Permalink
Support logLevel and logFile for SR-IOV plugin
Browse files Browse the repository at this point in the history
The SR-IOV device plugin now supports the configuration of logLevel
and logFile. Expose these settings through the API.

Signed-off-by: Andreas Karis <[email protected]>
  • Loading branch information
andreaskaris committed Sep 27, 2023
1 parent a42a00d commit 82ee821
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 1 deletion.
14 changes: 14 additions & 0 deletions api/v1/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,9 @@ func (cr *SriovIBNetwork) RenderNetAttDef() (*uns.Unstructured, error) {
data.Data["MetaPlugins"] = cr.Spec.MetaPluginsConfig
}

data.Data["LogLevelConfigured"] = false
data.Data["LogFileConfigured"] = false

objs, err := render.RenderDir(ManifestsPath, &data)
if err != nil {
return nil, err
Expand Down Expand Up @@ -652,6 +655,17 @@ func (cr *SriovNetwork) RenderNetAttDef() (*uns.Unstructured, error) {
data.Data["MetaPlugins"] = cr.Spec.MetaPluginsConfig
}

data.Data["LogLevelConfigured"] = false
if cr.Spec.LogLevel != "" {
data.Data["LogLevelConfigured"] = true
data.Data["LogLevel"] = cr.Spec.LogLevel
}
data.Data["LogFileConfigured"] = false
if cr.Spec.LogFile != "" {
data.Data["LogFileConfigured"] = true
data.Data["LogFile"] = cr.Spec.LogFile
}

objs, err := render.RenderDir(ManifestsPath, &data)
if err != nil {
return nil, err
Expand Down
7 changes: 7 additions & 0 deletions api/v1/sriovnetwork_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ type SriovNetworkSpec struct {
// MetaPluginsConfig configuration to be used in order to chain metaplugins to the sriov interface returned
// by the operator.
MetaPluginsConfig string `json:"metaPlugins,omitempty"`
// LogLevel sets the log level of the SRIOV device plugin - either of panic, error, warning, info, debug. Defaults
// to info if left blank.
// +kubebuilder:validation:Enum={"panic", "error","warning","info","debug",""}
LogLevel string `json:"logLevel,omitempty"`
// LogFile sets the log file of the SRIOV device plugin logs. If unset (default), this will log to stderr and thus
// to multuls and container runtime logs.
LogFile string `json:"logFile,omitempty"`
}

// SriovNetworkStatus defines the observed state of SriovNetwork
Expand Down
6 changes: 6 additions & 0 deletions bindata/manifests/cni-config/sriov-cni-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ spec:
{{- end -}}
{{- if .StateConfigured -}}
"link_state":"{{.SriovCniState}}",
{{- end -}}
{{- if .LogLevelConfigured -}}
"logLevel":"{{.LogLevel}}",
{{- end -}}
{{- if .LogFileConfigured -}}
"logFile":"{{.LogFile}}",
{{- end -}}
{{.SriovCniIpam}}
}
Expand Down
17 changes: 17 additions & 0 deletions config/crd/bases/sriovnetwork.openshift.io_sriovnetworks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,23 @@ spec:
- enable
- disable
type: string
logFile:
description: LogFile sets the log file of the SRIOV device plugin
logs. If unset (default), this will log to stderr and thus to multuls
and container runtime logs.
type: string
logLevel:
description: LogLevel sets the log level of the SRIOV device plugin
- either of panic, error, warning, info, debug. Defaults to info
if left blank.
enum:
- panic
- error
- warning
- info
- debug
- ""
type: string
maxTxRate:
description: Maximum tx rate, in Mbps, for the VF. Defaults to 0 (no
rate limiting)
Expand Down
20 changes: 19 additions & 1 deletion controllers/sriovnetwork_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ var _ = Describe("SriovNetwork Controller", func() {
ResourceName: "resource_1",
IPAM: `{"type":"host-local","subnet":"10.56.217.0/24","rangeStart":"10.56.217.171","rangeEnd":"10.56.217.181","routes":[{"dst":"0.0.0.0/0"}],"gateway":"10.56.217.1"}`,
},
"test-5": {
ResourceName: "resource_1",
IPAM: `{"type":"host-local","subnet":"10.56.217.0/24","rangeStart":"10.56.217.171","rangeEnd":"10.56.217.181","routes":[{"dst":"0.0.0.0/0"}],"gateway":"10.56.217.1"}`,
LogLevel: "debug",
LogFile: "/tmp/tmpfile",
},
}
sriovnets := util.GenerateSriovNetworkCRs(testNamespace, specs)
DescribeTable("should be possible to create/delete net-att-def",
Expand Down Expand Up @@ -93,6 +99,7 @@ var _ = Describe("SriovNetwork Controller", func() {
Entry("with networkNamespace flag", sriovnets["test-1"]),
Entry("with SpoofChk flag on", sriovnets["test-2"]),
Entry("with Trust flag on", sriovnets["test-3"]),
Entry("with LogLevel and LogFile", sriovnets["test-5"]),
)

newSpecs := map[string]sriovnetworkv1.SriovNetworkSpec{
Expand Down Expand Up @@ -291,7 +298,18 @@ func generateExpectedNetConfig(cr *sriovnetworkv1.SriovNetwork) string {
}
vlanQoS := cr.Spec.VlanQoS

configStr, err := formatJSON(fmt.Sprintf(`{ "cniVersion":"0.3.1", "name":"%s","type":"sriov","vlan":%d,%s%s%s"vlanQoS":%d,"ipam":%s }`, cr.GetName(), cr.Spec.Vlan, spoofchk, trust, state, vlanQoS, ipam))
var logLevel string
if cr.Spec.LogLevel != "" {
logLevel = fmt.Sprintf(`"logLevel":"%s",`, cr.Spec.LogLevel)
}
var logFile string
if cr.Spec.LogFile != "" {
logFile = fmt.Sprintf(`"logFile":"%s",`, cr.Spec.LogFile)
}

configStr, err := formatJSON(fmt.Sprintf(
`{ "cniVersion":"0.3.1", "name":"%s","type":"sriov","vlan":%d,%s%s%s"vlanQoS":%d,%s%s"ipam":%s }`,
cr.GetName(), cr.Spec.Vlan, spoofchk, trust, state, vlanQoS, logLevel, logFile, ipam))
if err != nil {
panic(err)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,23 @@ spec:
- enable
- disable
type: string
logFile:
description: LogFile sets the log file of the SRIOV device plugin
logs. If unset (default), this will log to stderr and thus to multuls
and container runtime logs.
type: string
logLevel:
description: LogLevel sets the log level of the SRIOV device plugin
- either of panic, error, warning, info, debug. Defaults to info
if left blank.
enum:
- panic
- error
- warning
- info
- debug
- ""
type: string
maxTxRate:
description: Maximum tx rate, in Mbps, for the VF. Defaults to 0 (no
rate limiting)
Expand Down

0 comments on commit 82ee821

Please sign in to comment.