Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/doc/en/admintools.xml
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/doc/en/admintools.xml	(revision 39501)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/doc/en/admintools.xml	(working copy)
@@ -5808,6 +5808,16 @@
                     <verbose_name>Member Of</verbose_name>
                     <help_text>Example: CN=Engineering,OU=Development,DC=EXAMPLE,DC=COM</help_text>
                 </field>
+                <field name="auth_type" type="string">
+                    <verbose_name>Authentication Type</verbose_name>
+                    <help_text>Example: ASCII, PAP, CHAP. Default: ASCII</help_text>
+                </field>
+                <field name="author_service" type="string">
+                    <verbose_name>Authorization Service</verbose_name>
+                    <help_text>In TACACS+ authorization, only administrator accounts whose “priv-lvl” field is
+15 are authorized to access the Config mode. Other administrator accounts are
+authorized to access only the Enable mode.</help_text>
+                </field>
             </fieldgrp>
         </model>
     </package>
Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/user/__init__.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/user/__init__.py	(revision 39501)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/admintools/user/__init__.py	(working copy)
@@ -762,9 +762,16 @@
                     ), primary_key=True)
     host_name = CharField(verbose_name=_('Host Name'))
     aaa_port = PortField(verbose_name=_('Port'))
-    secret = CharField(verbose_name=_('Secret'), default='', condition=ValueCondition('server_id', ['es01', 'es02']))
+    secret = CharField(verbose_name=_('Secret'), default='', condition=ValueCondition('server_id', ['es01', 'es02']), hide_list=True)
     distinguished_name = CharField(verbose_name=_('Domain'), default='', condition=ValueCondition('server_id', ['es03', 'es04']))
     member_of = CharField(verbose_name=_('MemberOf'), default='', condition=ValueCondition('server_id', ['es03', 'es04']))
+    auth_type = EnumField(verbose_name=_('Authentication Type'), default='ASCII', values=(
+        ('ASCII', _('ASCII')),
+        ('PAP', _('PAP')),
+        ('CHAP', _('CHAP')),
+    ), condition=ValueCondition('server_id', ['es02']), optional=True)
+    author_service = CharField(verbose_name=_('Authorization Service'), default='array_author',
+                               condition=ValueCondition('server_id', ['es02']), optional=True)
 
     class Meta:
         verbose_name = _('Admin AAA Server')
@@ -774,7 +781,8 @@
         def _get_query_set(self):
             self.cli.set_enable()
             regex_parser = [
-                RegexParser('admin aaa server (?P<server_id>es01|es02) "(?P<host_name>.*?)" (?P<aaa_port>[0-9]+) "(?P<secret>.*?)"', MATCHALL, reflags=re.S),
+                RegexParser('admin aaa server (?P<server_id>es01) "(?P<host_name>.*?)" (?P<aaa_port>[0-9]+) "(?P<secret>.*?)"', MATCHALL, reflags=re.S),
+                RegexParser('admin aaa server (?P<server_id>es02) "(?P<host_name>.*?)" (?P<aaa_port>[0-9]+) "(?P<secret>.*?)" "(?P<auth_type>.*?)" "(?P<author_service>.*?)"', MATCHALL, reflags=re.S),
                 RegexParser('admin aaa server (?P<server_id>es03) "(?P<host_name>.*?)" (?P<aaa_port>[0-9]+) "(?P<distinguished_name>.*?)" "(?P<member_of>.*?)"',MATCHALL, reflags=re.S),
                 RegexParser('admin aaa server (?P<server_id>es04) settings "(?P<host_name>.*?)" (?P<aaa_port>[0-9]+) "(?P<distinguished_name>.*?)" "(?P<member_of>.*?)"',MATCHALL, reflags=re.S)
             ]
@@ -788,6 +796,10 @@
                         aaa_server_data['distinguished_name'] = None
                     if 'member_of' not in aaa_server_data:
                         aaa_server_data['member_of'] = None
+                    if 'auth_type' not in aaa_server_data:
+                        aaa_server_data['auth_type'] = None
+                    if 'author_service' not in aaa_server_data:
+                        aaa_server_data['author_service'] = None
                     admin_aaa_server_result.append(aaa_server_data)
                     self._model._meta.mark_delay_query(aaa_server_data)
             return QuerySet(self._model, admin_aaa_server_result)
@@ -802,8 +814,14 @@
             data = instance.get_field_dict()
             self.cli.set_config()
             cli_cmd = ''
-            if 'server_id' in data and (data['server_id'] == 'es01' or data['server_id'] == 'es02'):
+            if 'server_id' in data and data['server_id'] == 'es01':
                 cli_cmd = 'admin aaa server %(server_id)s "%(host_name)s" %(aaa_port)u "%(secret)s"' % data
+            if 'server_id' in data and data['server_id'] == 'es02':
+                auth_type = data.get('auth_type', 'ASCII')
+                author_service = data.get('author_service', 'array_author')
+                cli_cmd = 'admin aaa server %s "%s" %u "%s" "%s" "%s"' % (
+                    data['server_id'], data['host_name'], data['aaa_port'], data['secret'], auth_type, author_service
+                )
             if 'server_id' in data and data['server_id'] == 'es03':
                 cli_cmd = 'admin aaa server %(server_id)s "%(host_name)s" %(aaa_port)u "%(distinguished_name)s" "%(member_of)s"' % data
             if 'server_id' in data and data['server_id'] == 'es04':
