Fix verification on ovsdb when ovs daemon stopped
Resolves: RHBZ#2159679 Signed-off-by: Gris Ge <fge@redhat.com>
This commit is contained in:
parent
c670d83cc0
commit
03d759de6f
@ -0,0 +1,72 @@
|
||||
From ae3f45a725cb2639ef9e4c6fab1aead0debe7c29 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Tue, 10 Jan 2023 19:56:23 +0800
|
||||
Subject: [PATCH] ovsdb: Fix verification error when ovs daemon off
|
||||
|
||||
When applying `ovs-db: {}` with ovs daemon stopped, nmstate will fail
|
||||
with:
|
||||
|
||||
NmstateError: VerificationError: Verification failure:
|
||||
ovsdb.external_ids desire '{}', current 'null'
|
||||
|
||||
Fixed by treating `ovs-db: {}` as
|
||||
|
||||
```yml
|
||||
ovs-db:
|
||||
external_ids: {}
|
||||
other_config: {}
|
||||
```
|
||||
|
||||
Unit test case and integration test case included.
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
rust/src/lib/query_apply/ovs.rs | 11 ++++++++++-
|
||||
rust/src/lib/unit_tests/ovsdb.rs | 11 +++++++++++
|
||||
2 files changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/rust/src/lib/query_apply/ovs.rs b/rust/src/lib/query_apply/ovs.rs
|
||||
index c1e0cf2e..13c4079d 100644
|
||||
--- a/rust/src/lib/query_apply/ovs.rs
|
||||
+++ b/rust/src/lib/query_apply/ovs.rs
|
||||
@@ -30,8 +30,17 @@ impl MergedOvsDbGlobalConfig {
|
||||
other_config: Some(other_config),
|
||||
prop_list: vec!["external_ids", "other_config"],
|
||||
};
|
||||
+
|
||||
let desired_value = serde_json::to_value(&desired)?;
|
||||
- let current_value = serde_json::to_value(current)?;
|
||||
+ let current_value = if current.is_none() {
|
||||
+ serde_json::to_value(&OvsDbGlobalConfig {
|
||||
+ external_ids: Some(HashMap::new()),
|
||||
+ other_config: Some(HashMap::new()),
|
||||
+ prop_list: Vec::new(),
|
||||
+ })?
|
||||
+ } else {
|
||||
+ serde_json::to_value(current)?
|
||||
+ };
|
||||
|
||||
if let Some((reference, desire, current)) = get_json_value_difference(
|
||||
"ovsdb".to_string(),
|
||||
diff --git a/rust/src/lib/unit_tests/ovsdb.rs b/rust/src/lib/unit_tests/ovsdb.rs
|
||||
index 1c9618a2..698f1a65 100644
|
||||
--- a/rust/src/lib/unit_tests/ovsdb.rs
|
||||
+++ b/rust/src/lib/unit_tests/ovsdb.rs
|
||||
@@ -156,3 +156,14 @@ other_config: {}
|
||||
expect.other_config.as_ref().unwrap()
|
||||
);
|
||||
}
|
||||
+
|
||||
+#[test]
|
||||
+fn test_ovsdb_verify_null_current() {
|
||||
+ let desired: OvsDbGlobalConfig = serde_yaml::from_str("{}").unwrap();
|
||||
+ let pre_apply_current = desired.clone();
|
||||
+ let current = desired.clone();
|
||||
+
|
||||
+ let merged_ovsdb = MergedOvsDbGlobalConfig::new(desired, pre_apply_current);
|
||||
+
|
||||
+ merged_ovsdb.verify(¤t).unwrap();
|
||||
+}
|
||||
--
|
||||
2.39.0
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Name: nmstate
|
||||
Version: 2.2.3
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: Declarative network manager API
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/%{srcname}/%{srcname}
|
||||
@ -12,6 +12,7 @@ Source0: https://github.com/nmstate/nmstate/releases/download/v%{version}
|
||||
Source1: https://github.com/nmstate/nmstate/releases/download/v%{version}/nmstate-%{version}.tar.gz.asc
|
||||
Source2: https://nmstate.io/nmstate.gpg
|
||||
Source3: https://github.com/nmstate/nmstate/releases/download/v%{version}/nmstate-vendor-%{version}.tar.xz
|
||||
Patch1: BZ_2159679-ovsdb-Fix-verification-error-when-ovs-daemon-off.patch
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: gnupg2
|
||||
@ -150,6 +151,9 @@ popd
|
||||
/sbin/ldconfig
|
||||
|
||||
%changelog
|
||||
* Wed Jan 11 2023 Gris Ge <fge@redhat.com> - 2.2.3-3
|
||||
- Fix OVSDB verification error
|
||||
|
||||
* Tue Jan 10 2023 Gris Ge <fge@redhat.com> - 2.2.3-2
|
||||
- Enable error message for rpm CI gating
|
||||
|
||||
|
@ -4,4 +4,6 @@ TMP_FILE=$(mktemp /tmp/nmstate.XXXXXX.yaml)
|
||||
|
||||
nmstatectl show > $TMP_FILE
|
||||
|
||||
nmstatectl set $TMP_FILE
|
||||
cat $TMP_FILE
|
||||
|
||||
nmstatectl set $TMP_FILE -vvv
|
||||
|
Loading…
Reference in New Issue
Block a user