Keystone doesn't allow any input fields which has ":" or "-"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Identity (keystone) |
Invalid
|
Low
|
Unassigned |
Bug Description
If we define a custom field called "My-Filed" and pass it as input it is getting converted to "My_Field" internally. I believe this converston should happen only for HTTP headers and not for payload.
e.g
POST /users
{
"name" : "haneef"
"emailAddress" : "a@b.com"
"MY-Field" : "MyCustomFiled"
}
Keytone converts the payload to
POST /users
{
"name" : "haneef"
"emailAddress" : "a@b.com"
"MY_Field" : "MyCustomFiled"
}
before passing it to identity driver.
commons/wsgi.py
def _normalize_
return str(arg)
That is the function that is converting it. I believe this normalization should happen only for HTTP headers and not for payload
If the create_user call comes to
@controller.
def create_user(self, context, user):
ref = self._assign_
ref = self._normalize
ref = self.identity_
return UserV3.
due to normalize_dict, the payload is getting changed. Is it a bug or keystone doesn't allow "-" , ":" in payload?
Changed in keystone: | |
assignee: | nobody → Liusheng (liusheng) |
Changed in keystone: | |
assignee: | Liusheng (liusheng) → nobody |
Changed in keystone: | |
status: | In Progress → New |
Changed in keystone: | |
status: | New → Invalid |
I believe this behavior is/was intended to support v2.0 API extension prefixes.