When Keystone generates a tenant ID, the code looks like:

```python
tenant_ref['id'] = tenant_ref.get('id', uuid.uuid4().hex)
```
So it still has to always be a valid UUID.  It's just a hex representation of it.  Let me check quickly if keystone-cli allows only one format of UUID.  My initially feeling is that you would do:

1. Validate by doing UUID.uuid(val)
2. If valid, convert to UUID.uuid(val).hex

But if keystone-cli only accepts the hex value, I can see the reasoning behind validating against that format.  But in that case, you shouldn't call it 'is_valid_keystone_project_id' but rather, 'is_valid_hex_uuid'