Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.controller.js
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.controller.js	(revision 2752)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.controller.js	(working copy)
@@ -16,14 +16,36 @@
             var settingViewModal = this;
 
             settingViewModal.user_display = false;
+            settingViewModal.snmpv3 = false;
+            settingViewModal.snmpv3_username = '';
+            settingViewModal.snmpv3_security_level = 'authNoPriv';
+            settingViewModal.snmpv3_auth_password = '';
+            settingViewModal.snmpv3_auth_protocol = 'MD5';
+            settingViewModal.snmpv3_private_password = '';
+            settingViewModal.snmpv3_private_passoword_protocol = 'DES';
 
+            settingViewModal.securityLevels = [
+                {label: 'authNoPriv', value: 'authNoPriv'},
+                {label: 'authPriv', value: 'authPriv'}
+            ]
+
+            settingViewModal.authenticationProtocols = [
+                {label: 'MD5', value: 'MD5'},
+                {label: 'SHA1', value: 'SHA1'}
+            ]
+
+            settingViewModal.privatePasswordProtocols = [
+                {label: 'MD5', value: 'MD5'},
+                {label: 'SHA1', value: 'SHA1'}
+            ]
+
             var device_type_info = localStorageService.getWebStorage("device_type_info");
 
             $scope.$watch(function () {
                 return [settingViewModal.type, settingViewModal.protocol];
             }, function (value) {
                 if (value[0]) {
-                    if (value[1] == 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(value[0].toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(value[0].toLowerCase()) != -1) {
+                    if (value[1] === 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(value[0].toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(value[0].toLowerCase()) !== -1) {
                         settingViewModal.user_display = true;
                     } else {
                         settingViewModal.user_display = false;
@@ -36,11 +58,11 @@
             var deviceKey = window.localStorage.__deviceKey__;
             deviceKey = JSON.parse(deviceKey);
 
-            if (!settingViewModal.detail) { // No data
-                getInfo()
-            } else {
-                parseSetting(settingViewModal.detail);
-            }
+            // if (!settingViewModal.detail) { // No data
+            getInfo()
+            // } else {
+            //     parseSetting(settingViewModal.detail);
+            // }
 
             $scope.inputType = 'password';
             $scope.console_inputType = 'password';
@@ -72,7 +94,7 @@
                 }
             }
 
-            settingViewModal.showProgressBar = function() {
+            settingViewModal.showProgressBar = function () {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/common/templates/progress.html',
                     controller: 'showProgressCtrl',
@@ -89,13 +111,54 @@
                             $rootScope.detail = data;
                             settingViewModal.detail = $rootScope.detail;
                             parseSetting(settingViewModal.detail);
+                            getDeviceSNMPv3Config();
                         } else {
                             console.log('500 - Internal server error.');
                         }
+                    }
+                });
+            }
+
+            function getDeviceSNMPv3Config() {
+                deviceService.getDeviceSNMPv3Config(settingViewModal.detail.ip).then(function (res) {
+                    if (res && res.status === 200) {
+                        let snmp_info = res.data;
+                        settingViewModal.snmpv3 = snmp_info.enabled;
+                        settingViewModal.snmpv3_username = snmp_info.username;
+                        settingViewModal.snmpv3_security_level = snmp_info.sec_level;
+                        settingViewModal.snmpv3_auth_password = snmp_info.auth_pass;
+                        settingViewModal.snmpv3_auth_protocol = snmp_info.auth_protocol;
+                        settingViewModal.snmpv3_private_password = snmp_info.priv_pass;
+                        settingViewModal.snmpv3_private_passoword_protocol = snmp_info.priv_protocol;
                     }
                 });
             }
 
+            function updateDeviceSNMPv3Config() {
+                settingViewModal.showProgressBar();
+                let payload = JSON.stringify({
+                    "device_ip": settingViewModal.detail.ip,
+                    "device_type": settingViewModal.type,
+                    "username": settingViewModal.snmpv3_username,
+                    "auth_pass": settingViewModal.snmpv3_auth_password,
+                    "priv_pass": settingViewModal.snmpv3_private_password,
+                    "auth_protocol": settingViewModal.snmpv3_auth_protocol,
+                    "priv_protocol": settingViewModal.snmpv3_private_passoword_protocol,
+                    "sec_level": settingViewModal.snmpv3_security_level,
+                    "enabled": settingViewModal.snmpv3,
+                })
+                deviceService.updateDeviceSNMPv3Config(payload).then(function (resp) {
+                    $rootScope.$broadcast('endLoading', true);
+                    if (resp && resp.status === 200) {
+                        if (resp.data && resp.data.message) {
+                            getInfo()
+                        } else {
+                            settingViewModal.failed = $filter('T')(resp.data[1]);
+                        }
+                    }
+                })
+            }
+
             function parseSetting(info) {
                 if (info) {
                     var account = info.restapi_account,
@@ -129,7 +192,7 @@
                     // }
 
                     settingViewModal.type = info.type;
-                    if (settingViewModal.protocol == "xmlrpc" || device_type_info.ADC_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) != -1) {
+                    if (settingViewModal.protocol === "xmlrpc" || device_type_info.ADC_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) !== -1) {
                         var console_account = info.console_account;
                         settingViewModal.console_username = console_account.console_username;
                         settingViewModal.console_password = console_account.console_password;
@@ -141,7 +204,7 @@
                 }
             }
 
-            settingViewModal.changeInput = function ()  {
+            settingViewModal.changeInput = function () {
                 if ($scope.inputType === 'password') {
                     $scope.inputType = 'text';
                 } else {
@@ -186,7 +249,7 @@
                 //         ipv6: settingViewModal.intranet_ip
                 //     }
                 // }
-                if (settingViewModal.protocol == "xmlrpc" || device_type_info.ADC_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) != -1) {
+                if (settingViewModal.protocol === "xmlrpc" || device_type_info.ADC_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(settingViewModal.type.toLowerCase()) !== -1) {
                     if (isEmpty(settingViewModal.console_username)) {
                         $rootScope.TipService.setMessage($filter('T')("{0} can't be empty!", [$filter('T')('Console Username')]));
                         return;
@@ -206,7 +269,8 @@
                     $rootScope.$broadcast('endLoading', true);
                     if (res && res.status === 200) {
                         if (res.data[0]) {
-                            getInfo();
+                            // getInfo();
+                            updateDeviceSNMPv3Config();
                         } else {
                             $rootScope.TipService.setMessage(res.data[1]);
                             settingsForm.$dirty = true;
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.html
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.html	(revision 2752)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/detail/setting.html	(working copy)
@@ -117,6 +117,63 @@
                 </div>
             </div> -->
             <div class="form-group">
+                <label for="snmpv3" class="col-md-3 control-label">{{ 'Enable SNMPv3 (Default SNMPv2)' | T}}</label>
+                <div class="col-md-8">
+                    <label>
+                        <input type="checkbox" bs-switch class="switch" ng-model="setting.snmpv3"
+                               switch-active="true" resettable>
+                    </label>
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true">
+                <label for="snmpv3_username" class="col-md-3 control-label"><sup>*</sup>{{ 'SNMPv3 Username' | T}}</label>
+                <div class="col-md-8">
+                    <div class="account-wrap">
+                        <i class="array-user"></i>
+                        <input ng-verify="required:true" type="text" class="form-control"
+                               ng-model="setting.snmpv3_username" placeholder="{{ 'SNMPv3 Username' | T}}">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true">
+                <label for="snmpv3_security_level" class="col-md-3 control-label"><sup>*</sup>Security Level</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="setting.snmpv3_security_level">
+                        <option ng-repeat="row in setting.securityLevels" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true">
+                <label for="snmpv3_auth_password" class="col-md-3 control-label"><sup>*</sup>{{ 'Authentication Password' | T}}</label>
+                <div class="col-md-8">
+                    <input ng-verify="required:false" type="password" class="form-control"
+                           ng-model="setting.snmpv3_auth_password">
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true">
+                <label for="snmpv3_auth_protocol" class="col-md-3 control-label"><sup>*</sup>Authentication Protocol</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="setting.snmpv3_auth_protocol">
+                        <option ng-repeat="row in setting.authenticationProtocols" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true && setting.snmpv3_security_level === 'authPriv'">
+                <label for="snmpv3_private_password" class="col-md-3 control-label"><sup>*</sup>{{ 'Private Password' | T}}</label>
+                <div class="col-md-8">
+                    <input ng-verify="required:false" type="password" class="form-control"
+                           ng-model="setting.snmpv3_auth_password">
+                </div>
+            </div>
+            <div class="form-group" ng-if="setting.snmpv3 === true && setting.snmpv3_security_level === 'authPriv'">
+                <label for="snmpv3_private_passoword_protocol" class="col-md-3 control-label"><sup>*</sup>Private Password Protocol</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="setting.snmpv3_private_passoword_protocol">
+                        <option ng-repeat="row in setting.privatePasswordProtocols" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
                 <label class="col-md-3 control-label">{{ 'Enable Log' | T}}</label>
                 <div class="col-md-6">
                     <input type="checkbox" bs-switch class="switch" ng-model="setting.log_enable" switch-active="true" resettable>
@@ -136,4 +193,4 @@
 
         </form>
 
-    </div>
\ No newline at end of file
+    </div>
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/device.service.js
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/device.service.js	(revision 2752)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/device.service.js	(working copy)
@@ -21,6 +21,9 @@
                 checkBuildInfo:checkBuildInfo,
                 getOutputFile: getOutputFile,
                 actionUpdateDeviceInfo: actionUpdateDeviceInfo,
+                updateDeviceSNMPv3Config: updateDeviceSNMPv3Config,
+                getDeviceSNMPv3Config: getDeviceSNMPv3Config,
+                updateDeviceSNMPv3Status: updateDeviceSNMPv3Status
             };
             function getTest(url) {
                 return api.get(url);
@@ -37,6 +40,18 @@
                 return api.post('/api/cm/device_mgmt/device/Device/_add', post_data);
             }
 
+            function updateDeviceSNMPv3Config(payload) {
+                return api.post2('/snmpv3/config', payload);
+            }
+
+            function getDeviceSNMPv3Config(deviceIp) {
+                return api.get('/snmpv3/config?device_ip=' + deviceIp);
+            }
+
+            function updateDeviceSNMPv3Status(payload) {
+                return api.post2('/snmpv3/toggle', payload);
+            }
+
             function deleteDevice(data) {
                 var post_data = {
                     "pk": data
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.controller.js
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.controller.js	(revision 2752)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.controller.js	(working copy)
@@ -22,14 +22,36 @@
             addViewModal.backup_enable = false;
             addViewModal.user_display = false;
             addViewModal.deviceGroupFrom = 'created';
+            addViewModal.snmpv3 = false;
+            addViewModal.snmpv3_username = '';
+            addViewModal.snmpv3_security_level = 'authNoPriv';
+            addViewModal.snmpv3_auth_password = '';
+            addViewModal.snmpv3_auth_protocol = 'MD5';
+            addViewModal.snmpv3_private_password = '';
+            addViewModal.snmpv3_private_passoword_protocol = 'DES';
 
+            addViewModal.securityLevels = [
+                {label: 'authNoPriv', value: 'authNoPriv'},
+                {label: 'authPriv', value: 'authPriv'}
+            ]
+
+            addViewModal.authenticationProtocols = [
+                {label: 'MD5', value: 'MD5'},
+                {label: 'SHA1', value: 'SHA1'}
+            ]
+
+            addViewModal.privatePasswordProtocols = [
+                {label: 'MD5', value: 'MD5'},
+                {label: 'SHA1', value: 'SHA1'}
+            ]
+
             var device_type_info = localStorageService.getWebStorage("device_type_info");
 
             $scope.$watch(function () {
                 return [addViewModal.type, addViewModal.protocol];
             }, function (value) {
                 if (value[0]) {
-                    if (value[1] == 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(value[0].toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(value[0].toLowerCase()) != -1) {
+                    if (value[1] === 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(value[0].toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(value[0].toLowerCase()) !== -1) {
                         addViewModal.user_display = true;
                     } else {
                         addViewModal.user_display = false;
@@ -60,7 +82,7 @@
             addViewModal.close = function () {
                 $uibModalInstance.dismiss('cancel');
             };
-            addViewModal.showProgressBar = function() {
+            addViewModal.showProgressBar = function () {
                 var modalInstance = $uibModal.open({
                     templateUrl: 'app/modules/common/templates/progress.html',
                     controller: 'showProgressCtrl',
@@ -74,18 +96,18 @@
                     addViewModal.failed = $filter('T')("{0} can't be empty!", [$filter('T')('Device Name')]);
                     return;
                 } else if (isSpecialChars(addViewModal.name)) {
-                    addViewModal.failed  = $filter('T')("{0} is invalid!", [$filter('T')('Device Name')])
+                    addViewModal.failed = $filter('T')("{0} is invalid!", [$filter('T')('Device Name')])
                     return;
                 }
                 if (isEmpty(addViewModal.ip)) {
                     addViewModal.failed = $filter('T')("{0} can't be empty!", ['IP']);
                     return;
                 }
-                if (typeof(addViewModal.port) == "undefined" || addViewModal.port < 0 || addViewModal.port > 65535) {
+                if (typeof (addViewModal.port) == "undefined" || addViewModal.port < 0 || addViewModal.port > 65535) {
                     addViewModal.failed = $filter('T')('Port value must be between 0 and 65535.');
                     return;
                 }
-                if (addViewModal.protocol == "protocol"){
+                if (addViewModal.protocol === "protocol") {
                     if (isEmpty(addViewModal.username)) {
                         addViewModal.failed = $filter('T')("{0} can't be empty!", [$filter('T')('Restful Username')]);
                         return;
@@ -120,12 +142,12 @@
                 //var isIPV4_firewall = document.getElementsByName('choiceFireIP')[0].checked;
                 //var isIPV4_intranet = document.getElementsByName('choiceIntranetIP')[0].checked;
 
-                if ((isIPV4 && !commonUtils.isIPv4(addViewModal.ip)) || (!isIPV4 && !commonUtils.isIPv6(addViewModal.ip)) ) {
+                if ((isIPV4 && !commonUtils.isIPv4(addViewModal.ip)) || (!isIPV4 && !commonUtils.isIPv6(addViewModal.ip))) {
                     addViewModal.failed = $filter('T')("Invalid {0}.", [$filter('T')('IP Address')]);
                     return;
                 }
 
-                if (addViewModal.protocol == 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) != -1) {
+                if (addViewModal.protocol === 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) !== -1) {
                     if (isEmpty(addViewModal.console_username)) {
                         addViewModal.failed = $filter('T')("{0} can't be empty!", [$filter('T')('WebUI Console Username')]);
                         return;
@@ -163,15 +185,15 @@
                     location: addViewModal.location,
                     firewall_ip: {},
                     intranet_ip: {},
-                    console_account : {
-                        console_username :'',
-                        console_password :''
+                    console_account: {
+                        console_username: '',
+                        console_password: ''
                     },
                     group_name_from: addViewModal.deviceGroupFrom,
                     device_group: [{'name': addViewModal.deviceGroup}],
                     enable_password: addViewModal.enable_password
                 }
-                if (addViewModal.protocol == 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) != -1 || device_type_info.WAF_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) != -1) {
+                if (addViewModal.protocol === 'xmlrpc' || device_type_info.ADC_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) !== -1 || device_type_info.WAF_TYPE_LIST.indexOf(addViewModal.type.toLowerCase()) !== -1) {
                     //add console account
                     data.console_account.console_username = addViewModal.console_username;
                     data.console_account.console_password = addViewModal.console_password;
@@ -207,16 +229,41 @@
                 //     }
                 // }
 
-                data.webui_port = (addViewModal.webui_port == undefined) ? 8888 : addViewModal.webui_port;
-                data.log_enable = addViewModal.log_enable ? true : false;
-                data.backup_enable = addViewModal.backup_enable ? true : false;
+                data.webui_port = (addViewModal.webui_port === undefined) ? 8888 : addViewModal.webui_port;
+                data.log_enable = addViewModal.log_enable;
+                data.backup_enable = addViewModal.backup_enable;
 
                 data = JSON.stringify(data);
                 deviceService.addDevice(data).then(function (res) {
                     $rootScope.$broadcast('endLoading', true);
                     if (res && res.status === 200) {
                         if (res.data[0]) { // add successful
-                            $uibModalInstance.close(true);
+                            // if (addViewModal.snmpv3) {
+                            addViewModal.showProgressBar();
+                            let payload = JSON.stringify({
+                                "device_ip": addViewModal.ip,
+                                "device_type": addViewModal.type,
+                                "username": addViewModal.snmpv3_username,
+                                "auth_pass": addViewModal.snmpv3_auth_password,
+                                "priv_pass": addViewModal.snmpv3_private_password,
+                                "auth_protocol": addViewModal.snmpv3_auth_protocol,
+                                "priv_protocol": addViewModal.snmpv3_private_passoword_protocol,
+                                "sec_level": addViewModal.snmpv3_security_level,
+                                "enabled": addViewModal.snmpv3,
+                            })
+                            deviceService.updateDeviceSNMPv3Config(payload).then(function (resp) {
+                                $rootScope.$broadcast('endLoading', true);
+                                if (resp && resp.status === 200) {
+                                    if (resp.data && resp.data.message) {
+                                        $uibModalInstance.close(true);
+                                    } else {
+                                        addViewModal.failed = $filter('T')(resp.data[1]);
+                                    }
+                                }
+                            })
+                            // } else {
+                            //     $uibModalInstance.close(true);
+                            // }
                         } else { // fail
                             addViewModal.failed = $filter('T')(res.data[1]);
                             //document.getElementById('addSubmit').removeAttribute('disabled');
@@ -244,7 +291,7 @@
             function isSpecialChars(str) {
                 var flag = false;
                 var chars = "[`~!@#$^&*()=|{}':;',\\[\\]<>/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]";
-                for (var i=0; i< str.length; i++) {
+                for (var i = 0; i < str.length; i++) {
                     if (chars.indexOf(str[i]) > 0) {
                         flag = true;
                         break;
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.html
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.html	(revision 2752)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/client/app/modules/device/modal/device.add.html	(working copy)
@@ -230,6 +230,63 @@
                 </div>
             </div>
             <div class="form-group">
+                <label for="snmpv3" class="col-md-3 control-label">{{ 'Enable SNMPv3 (Default SNMPv2)' | T}}</label>
+                <div class="col-md-8">
+                    <label>
+                        <input type="checkbox" bs-switch class="switch" ng-model="deviceAdd.snmpv3"
+                               switch-active="true" resettable>
+                    </label>
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true">
+                <label for="snmpv3_username" class="col-md-3 control-label"><sup>*</sup>{{ 'SNMPv3 Username' | T}}</label>
+                <div class="col-md-8">
+                    <div class="account-wrap">
+                        <i class="array-user"></i>
+                        <input ng-verify="required:true" type="text" class="form-control"
+                               ng-model="deviceAdd.snmpv3_username" placeholder="{{ 'SNMPv3 Username' | T}}">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true">
+                <label for="snmpv3_security_level" class="col-md-3 control-label"><sup>*</sup>Security Level</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="deviceAdd.snmpv3_security_level">
+                        <option ng-repeat="row in deviceAdd.securityLevels" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true">
+                <label for="snmpv3_auth_password" class="col-md-3 control-label"><sup>*</sup>{{ 'Authentication Password' | T}}</label>
+                <div class="col-md-8">
+                    <input ng-verify="required:false" type="password" class="form-control"
+                           ng-model="deviceAdd.snmpv3_auth_password">
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true">
+                <label for="snmpv3_auth_protocol" class="col-md-3 control-label"><sup>*</sup>Authentication Protocol</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="deviceAdd.snmpv3_auth_protocol">
+                        <option ng-repeat="row in deviceAdd.authenticationProtocols" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true && deviceAdd.snmpv3_security_level === 'authPriv'">
+                <label for="snmpv3_private_password" class="col-md-3 control-label"><sup>*</sup>{{ 'Private Password' | T}}</label>
+                <div class="col-md-8">
+                    <input ng-verify="required:false" type="password" class="form-control"
+                           ng-model="deviceAdd.snmpv3_auth_password">
+                </div>
+            </div>
+            <div class="form-group" ng-if="deviceAdd.snmpv3 === true && deviceAdd.snmpv3_security_level === 'authPriv'">
+                <label for="snmpv3_private_passoword_protocol" class="col-md-3 control-label"><sup>*</sup>Private Password Protocol</label>
+                <div class="col-md-8">
+                    <select ng-verify="required:true" name="type" class="form-control" ng-model="deviceAdd.snmpv3_private_passoword_protocol">
+                        <option ng-repeat="row in deviceAdd.privatePasswordProtocols" value="{{row.value}}">{{row.label}}</option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
                 <label for="enable" class="col-md-3 control-label">{{ 'Enable Log' | T}}</label>
                 <div class="col-md-8">
                     <label>
