No, it does not seem we can bypass this easily - tried several things like
replacing the empty string with spaces, and they failed quite badly.

But we already use strings like NonEmptyString which are expected not to be
interpreted as literals - why not use EmptyString?

A hackish mini-patch achieving this:

diff --git a/lib/build/sphinx_ext.py b/lib/build/sphinx_ext.py
index 5f29473..9cceee9 100644
--- a/lib/build/sphinx_ext.py
+++ b/lib/build/sphinx_ext.py
@@ -173,6 +173,8 @@ def _BuildOpcodeParams(op_id, include, exclude, alias):
     if has_default or has_test:
       buf.write(" (")
       if has_default:
+        if default == "":
+          default = "EmptyString"
         buf.write("defaults to ``%s``" % (default,))
         if has_test:
           buf.write(", ")

Do you think this would be fine?

On Mon, Jun 23, 2014 at 5:31 PM, Dimitris Aragiorgis <[email protected]>
wrote:

>
> Hi,
>
> As an alternative I tried this:
>
>  pNetworkVlan :: Field
>  pNetworkVlan =
> -  withDoc "Network vlan when connecting to a group" $
> +  withDoc "Network vlan when connecting to a group" .
> +  defaultField [| "" |] .
>    optionalField $ simpleField "network_vlan" [t| String |]
>

While we're touching this: there is an optionalStringField function defined
near the top of the file which is more compact.


>
> but make doc/html exited with a (sphinx) warning:
>
> Warning, treated as error:
> OP_NETWORK_CONNECT:25: WARNING: Inline literal start-string without
> end-string.
>
> This seems to be related with the generated doc/html/rapi.html and
> especially
> the docutils literal class:
>
> <p><tt class="docutils literal"><span class="pre">network_vlan</span></tt>
> (defaults to <tt class="docutils literal"><span class="pre"> </span></tt>,
> must be <tt class="docutils literal"><span class="pre">None</span> <span
> class="pre">or</span> <span class="pre">String</span></tt>)</p>
>
> Apparently this cannot be fixed/bypassed, right?
>
> Thanks,
> dimara
>
>
> * Dimitris Aragiorgis <[email protected]> [2014-06-23 18:28:48 +0300]:
>
> > To keep backwards compatibility with old RAPI, make network_vlan
> > param of OpNetworkConnect optional. If not passed, cmdlib will use
> > the empty string as default value.
> >
> > Signed-off-by: Dimitris Aragiorgis <[email protected]>
> > ---
> >  lib/cmdlib/network.py  |    5 ++++-
> >  src/Ganeti/OpParams.hs |    2 +-
> >  2 files changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/cmdlib/network.py b/lib/cmdlib/network.py
> > index d93f2dd..c2f3bcb 100644
> > --- a/lib/cmdlib/network.py
> > +++ b/lib/cmdlib/network.py
> > @@ -572,7 +572,10 @@ class LUNetworkConnect(LogicalUnit):
> >      self.group_name = self.op.group_name
> >      self.network_mode = self.op.network_mode
> >      self.network_link = self.op.network_link
> > -    self.network_vlan = self.op.network_vlan
> > +    if self.op.network_vlan:
> > +      self.network_vlan = self.op.network_vlan
> > +    else:
> > +      self.network_vlan = ""
> >
> >      self.network_uuid = self.cfg.LookupNetwork(self.network_name)
> >      self.group_uuid = self.cfg.LookupNodeGroup(self.group_name)
> > diff --git a/src/Ganeti/OpParams.hs b/src/Ganeti/OpParams.hs
> > index ae00822..d24b440 100644
> > --- a/src/Ganeti/OpParams.hs
> > +++ b/src/Ganeti/OpParams.hs
> > @@ -1635,4 +1635,4 @@ pNetworkLink =
> >  pNetworkVlan :: Field
> >  pNetworkVlan =
> >    withDoc "Network vlan when connecting to a group" $
> > -  simpleField "network_vlan" [t| String |]
> > +  optionalField $ simpleField "network_vlan" [t| String |]
> > --
> > 1.7.10.4
>

Reply via email to