Message ID | 20220519154727.3577715-2-anna@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/2] rpcctl: Use the correct function for setting xprts offline and online | expand |
On 5/19/22 11:47 AM, Anna Schumaker wrote: > From: Anna Schumaker <Anna.Schumaker@Netapp.com> > > '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 <Anna.Schumaker@Netapp.com> 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)
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)