Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/snmp/__init__.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/snmp/__init__.py	(revision 39905)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/snmp/__init__.py	(working copy)
@@ -366,6 +366,10 @@
                     user_manager.get({'username': instance.username})
                 except Exception:
                     return cli_parse("invalid username", BlankParser(nonblank_exception=CLICmdError, nonblank_msg=__('%s does not exist in user database of SNMP.') % instance.username))
+                # check length of engine_id is even number
+                if hasattr(instance, 'engine_id') and instance.engine_id and \
+                    len(instance.engine_id) %2 != 0:
+                    return cli_parse("invalid length of engine id", BlankParser(nonblank_exception=CLICmdError, nonblank_msg=__('The length of Authoritative Engine ID for SNMPv3 cannot be an odd number.')))
                 host_cli = 'snmp host %(ip_str)s 3 "%(username)s"' % data
             cli.cmd(host_cli,
                 BlankParser(nonblank_exception=CLICmdError, supplement=True, ignore_msg=[
