vppapigen map: raise ValueError when fieldname is python keyword
When working on the lb api, one of the field names was chosen as 'as' (application server). Since 'as' is a python keyword, the field was renamed to _1 in vpp_papi. This changeset instead fails early with a descriptive message, hopefully saving others time troubleshooting the issue. ValueError: Fieldname 'as' is a python keyword and is not accessible via the python API. Type: feature Change-Id: Ib048d97de0e392645540092e356cf8989848c947 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
This commit is contained in:

committed by
Dave Wallace

parent
c458f5c09a
commit
ff47fb6456
@ -13,7 +13,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
option version = "3.1.0";
|
option version = "4.0.0";
|
||||||
|
|
||||||
import "vnet/ip/ip_types.api";
|
import "vnet/ip/ip_types.api";
|
||||||
|
|
||||||
@ -281,19 +281,19 @@ autoreply define map_param_set_security_check
|
|||||||
/** \brief Set MAP traffic class parameters
|
/** \brief Set MAP traffic class parameters
|
||||||
@param client_index - opaque cookie to identify the sender
|
@param client_index - opaque cookie to identify the sender
|
||||||
@param context - sender context, to match reply w/ request
|
@param context - sender context, to match reply w/ request
|
||||||
@param copy - 1 = copy packet class/TOS field, 0 = use class instead
|
@param copy - 1 = copy packet class/TOS field, 0 = use tc_class instead
|
||||||
@param class - class field value when copy == 0
|
@param tc_class - class field value when copy == 0
|
||||||
*/
|
*/
|
||||||
autoreply define map_param_set_traffic_class
|
autoreply define map_param_set_traffic_class
|
||||||
{
|
{
|
||||||
u32 client_index;
|
u32 client_index;
|
||||||
u32 context;
|
u32 context;
|
||||||
bool copy;
|
bool copy;
|
||||||
u8 class;
|
u8 tc_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/** \brief Set MAP TCP parammeters
|
/** \brief Set MAP TCP parameters
|
||||||
@param client_index - opaque cookie to identify the sender
|
@param client_index - opaque cookie to identify the sender
|
||||||
@param context - sender context, to match reply w/ request
|
@param context - sender context, to match reply w/ request
|
||||||
@parma tcp_mss - TCP MSS clamping value
|
@parma tcp_mss - TCP MSS clamping value
|
||||||
|
@ -523,7 +523,7 @@ static void
|
|||||||
vl_api_map_param_set_traffic_class_reply_t *rmp;
|
vl_api_map_param_set_traffic_class_reply_t *rmp;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
rv = map_param_set_traffic_class (mp->copy, mp->class);
|
rv = map_param_set_traffic_class (mp->copy, mp->tc_class);
|
||||||
|
|
||||||
REPLY_MACRO (VL_API_MAP_PARAM_SET_TRAFFIC_CLASS_REPLY);
|
REPLY_MACRO (VL_API_MAP_PARAM_SET_TRAFFIC_CLASS_REPLY);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import ply.lex as lex
|
|||||||
import ply.yacc as yacc
|
import ply.yacc as yacc
|
||||||
import sys
|
import sys
|
||||||
import argparse
|
import argparse
|
||||||
|
import keyword
|
||||||
import logging
|
import logging
|
||||||
import binascii
|
import binascii
|
||||||
import os
|
import os
|
||||||
@ -293,6 +294,9 @@ class Field():
|
|||||||
def __init__(self, fieldtype, name, limit=None):
|
def __init__(self, fieldtype, name, limit=None):
|
||||||
self.type = 'Field'
|
self.type = 'Field'
|
||||||
self.fieldtype = fieldtype
|
self.fieldtype = fieldtype
|
||||||
|
if name in keyword.kwlist:
|
||||||
|
raise ValueError("Fieldname {!r} is a python keyword and is not "
|
||||||
|
"accessible via the python API. ".format(name))
|
||||||
self.fieldname = name
|
self.fieldname = name
|
||||||
self.limit = limit
|
self.limit = limit
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user