2022-05-19 16:14:40

by Anna Schumaker

[permalink] [raw]
Subject: [PATCH v2 1/2] rpcctl: Use the correct function for setting xprts offline and online

From: Anna Schumaker <[email protected]>

Otherwise the tool will tell us:
'Namespace' object has no attribute 'set_state'

Signed-off-by: Anna Schumaker <[email protected]>
---
tools/rpcctl/rpcctl.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/rpcctl/rpcctl.py b/tools/rpcctl/rpcctl.py
index b8df556b682c..2a69eacd3103 100755
--- a/tools/rpcctl/rpcctl.py
+++ b/tools/rpcctl/rpcctl.py
@@ -142,7 +142,7 @@ class Xprt:
xprt.set_state("offline")
xprt.set_state("remove")
else:
- args.set_state(args.property)
+ xprt.set_state(args.property)
print(xprt)


--
2.36.1



2022-05-20 10:11:22

by Anna Schumaker

[permalink] [raw]
Subject: [PATCH v2 2/2] rpcctl: Print a message if the user tries to modify a main xprt

From: Anna Schumaker <[email protected]>

'main' xprts cannot be set offline or removed, so print a helpful error
message in this case instead of a cryptic 'invalid argument' message.

Signed-off-by: Anna Schumaker <[email protected]>
---
tools/rpcctl/rpcctl.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/rpcctl/rpcctl.py b/tools/rpcctl/rpcctl.py
index 2a69eacd3103..d2110ad6de93 100755
--- a/tools/rpcctl/rpcctl.py
+++ b/tools/rpcctl/rpcctl.py
@@ -90,10 +90,18 @@ class Xprt:
self.dstaddr = write_addr_file(self.path / "dstaddr", newaddr)

def set_state(self, state):
+ if self.info.get("main_xprt"):
+ raise Exception(f"Main xprts cannot be set {state}")
with open(self.path / "xprt_state", 'w') as f:
f.write(state)
self.read_state()

+ def remove(self):
+ if self.info.get("main_xprt"):
+ raise Exception("Main xprts cannot be removed")
+ self.set_state("offline")
+ self.set_state("remove")
+
def add_command(subparser):
parser = subparser.add_parser("xprt", help="Commands for individual xprts")
parser.set_defaults(func=Xprt.show, xprt=None)
@@ -139,8 +147,7 @@ class Xprt:
if args.property == "dstaddr":
xprt.set_dstaddr(socket.gethostbyname(args.newaddr[0]))
elif args.property == "remove":
- xprt.set_state("offline")
- xprt.set_state("remove")
+ xprt.remove()
else:
xprt.set_state(args.property)
print(xprt)
--
2.36.1


2022-05-27 02:54:29

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] rpcctl: Use the correct function for setting xprts offline and online



On 5/19/22 11:47 AM, Anna Schumaker wrote:
> From: Anna Schumaker <[email protected]>
>
> Otherwise the tool will tell us:
> 'Namespace' object has no attribute 'set_state'
>
> Signed-off-by: Anna Schumaker <[email protected]>
Committed... (tag: nfs-utils-2-6-2-rc5)

steved.
> ---
> tools/rpcctl/rpcctl.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/rpcctl/rpcctl.py b/tools/rpcctl/rpcctl.py
> index b8df556b682c..2a69eacd3103 100755
> --- a/tools/rpcctl/rpcctl.py
> +++ b/tools/rpcctl/rpcctl.py
> @@ -142,7 +142,7 @@ class Xprt:
> xprt.set_state("offline")
> xprt.set_state("remove")
> else:
> - args.set_state(args.property)
> + xprt.set_state(args.property)
> print(xprt)
>
>


2022-05-27 06:44:37

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] rpcctl: Print a message if the user tries to modify a main xprt



On 5/19/22 11:47 AM, Anna Schumaker wrote:
> From: Anna Schumaker <[email protected]>
>
> 'main' xprts cannot be set offline or removed, so print a helpful error
> message in this case instead of a cryptic 'invalid argument' message.
>
> Signed-off-by: Anna Schumaker <[email protected]>
Committed... (tag: nfs-utils-2-6-2-rc5)

steved
> ---
> tools/rpcctl/rpcctl.py | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/tools/rpcctl/rpcctl.py b/tools/rpcctl/rpcctl.py
> index 2a69eacd3103..d2110ad6de93 100755
> --- a/tools/rpcctl/rpcctl.py
> +++ b/tools/rpcctl/rpcctl.py
> @@ -90,10 +90,18 @@ class Xprt:
> self.dstaddr = write_addr_file(self.path / "dstaddr", newaddr)
>
> def set_state(self, state):
> + if self.info.get("main_xprt"):
> + raise Exception(f"Main xprts cannot be set {state}")
> with open(self.path / "xprt_state", 'w') as f:
> f.write(state)
> self.read_state()
>
> + def remove(self):
> + if self.info.get("main_xprt"):
> + raise Exception("Main xprts cannot be removed")
> + self.set_state("offline")
> + self.set_state("remove")
> +
> def add_command(subparser):
> parser = subparser.add_parser("xprt", help="Commands for individual xprts")
> parser.set_defaults(func=Xprt.show, xprt=None)
> @@ -139,8 +147,7 @@ class Xprt:
> if args.property == "dstaddr":
> xprt.set_dstaddr(socket.gethostbyname(args.newaddr[0]))
> elif args.property == "remove":
> - xprt.set_state("offline")
> - xprt.set_state("remove")
> + xprt.remove()
> else:
> xprt.set_state(args.property)
> print(xprt)