diff --git a/nova/api/openstack/placement/handlers/trait.py b/nova/api/openstack/placement/handlers/trait.py
index 0f131b92f..50fc6b7da 100644
--- a/nova/api/openstack/placement/handlers/trait.py
+++ b/nova/api/openstack/placement/handlers/trait.py
@@ -99,9 +99,9 @@ def put_trait(req):
         jsonschema.validate(name, CUSTOM_TRAIT)
     except jsonschema.ValidationError:
         raise webob.exc.HTTPBadRequest(
-            _('The trait is invalid. A valid trait must include prefix '
-              '"CUSTOM_" and use following characters: "A"-"Z", "0"-"9" and '
-              '"_"'))
+            _('The trait is invalid. A valid trait must be no longer than '
+              '255 characters, start with the prefix "CUSTOM_" and use '
+              'following characters: "A"-"Z", "0"-"9" and "_"'))
 
     trait = rp_obj.Trait(context)
     trait.name = name
diff --git a/nova/tests/functional/api/openstack/placement/gabbits/traits.yaml b/nova/tests/functional/api/openstack/placement/gabbits/traits.yaml
index 6cdadf138..6300db6d3 100644
--- a/nova/tests/functional/api/openstack/placement/gabbits/traits.yaml
+++ b/nova/tests/functional/api/openstack/placement/gabbits/traits.yaml
@@ -13,13 +13,19 @@ tests:
   PUT: /traits/TRAIT_X
   status: 400
   response_strings:
-    - 'The trait is invalid. A valid trait must include prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
+    - 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
 
 - name: create a trait with invalid characters
   PUT: /traits/CUSTOM_ABC:1
   status: 400
   response_strings:
-    - 'The trait is invalid. A valid trait must include prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
+    - 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
+
+- name: create a trait with name exceed max characters
+  PUT: /traits/CUSTOM_ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO
+  status: 400
+  response_strings:
+    - 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
 
 - name: create a trait
   PUT: /traits/CUSTOM_TRAIT_1