+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+##
+
+## Change log:
+# 1. Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 21-nov-2019
+##
+
+*** Keywords ***
+Configure NBI For RBAC
+ ${rc} ${stdout}= Run and Return RC and Output docker service update osm_nbi --force --env-add OSMNBI_AUTHENTICATION_BACKEND=keystone --env-add OSMNBI_AUTHENTICATION_AUTH_URL=keystone --env-add OSMNBI_AUTHENTICATION_AUTH_PORT=5000 --env-add OSMNBI_AUTHENTICATION_USER_DOMAIN_NAME=default --env-add OSMNBI_AUTHENTICATION_PROJECT_DOMAIN_NAME=default --env-add OSMNBI_AUTHENTICATION_SERVICE_USERNAME=nbi --env-add OSMNBI_AUTHENTICATION_SERVICE_PROJECT=service
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ Sleep 30s Wait for NBI service to be update
+
+
+Create User
+ [Arguments] ${user} ${password}
+
+ ${rc} ${stdout}= Run and Return RC and Output osm user-create ${user} --password ${password}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List User
+ ${rc} ${stdout}= Run and Return RC and Output osm user-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List User And Check For The Created User
+ [Arguments] ${user}
+ ${user list}= List User
+ Should Contain ${user list} ${user}
+
+
+Get User Info By Name
+ [Arguments] ${user_name}
+ ${rc} ${stdout}= Run and Return RC and Output osm user-show ${user_name}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Get User Info By ID
+ [Arguments] ${user_id}
+ ${rc} ${stdout}= Run and Return RC and Output osm user-show ${user_id}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Update User
+ [Arguments] ${user} ${field} ${value}
+ ${rc} ${stdout}= Run and Return RC and Output osm user-update ${field} ${value} ${user}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Update User And Verify Info
+ [Arguments] ${user} @{args}
+ FOR ${arg} IN @{args}
+ ${fields}= Get Dictionary Items ${arg}
+ Update User ${user} ${fields[0]} ${fields[1]}
+ END
+ ${rc} ${stdout}= Run and Return RC and Output osm user-show ${user}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Login With User And Perform Operation
+ [Arguments] ${user} ${password} ${project}
+ ${rc} ${stdout}= Run and Return RC and Output export OSM_USER=${user}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ ${rc} ${stdout}= Run and Return RC and Output export OSM_PROJECT=${project}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ ${rc} ${stdout}= Run and Return RC and Output export OSM_PASSWORD=${password}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ ${rc} ${stdout}= Run and Return RC and Output osm ns-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ Logout and Login With Admin
+
+
+Logout and Login With Admin
+ ${rc} ${stdout}= Run and Return RC and Output export OSM_USER=admin
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ ${rc} ${stdout}= Run and Return RC and Output export OSM_PASSWORD=admin
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ ${rc} ${stdout}= Run and Return RC and Output osm ns-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+
+
+Delete User
+ [Arguments] ${user}
+ ${rc} ${stdout}= Run and Return RC and Output osm user-delete ${user}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+
+
+Delete User And Check
+ [Arguments] ${user}
+ Delete User ${user}
+ ${rc} ${stdout}= Run and Return RC and Output osm user-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ Should Not Contain ${stdout} ${user}
+
+
+Create Project
+ [Arguments] ${project}
+ ${rc} ${stdout}= Run and Return RC and Output osm project-create ${project}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List Project
+ ${rc} ${stdout}= Run and Return RC and Output osm project-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List Project And Verify
+ [Arguments] ${project}
+ ${project list}= List Project
+ Should Contain ${project list} ${project}
+
+
+Get Project Info By Name
+ [Arguments] ${project_name}
+ ${rc} ${stdout}= Run and Return RC and Output osm project-show ${project_name}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+Get Project Info By ID
+ [Arguments] ${project_id}
+ ${rc} ${stdout}= Run and Return RC and Output osm project-show ${project_id}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+Update Project
+ [Arguments] ${project} ${feild} ${value}
+ ${rc} ${stdout}= Run and Return RC and Output osm project-update ${feild} ${value} ${project}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Update Project Name And Verify
+ [Arguments] ${old_name} ${new_name}
+ Update Project ${old_name} --name ${new_name}
+ List Project And Verify ${new_name}
+
+
+Delete Project
+ [Arguments] ${project}
+ ${rc} ${stdout}= Run and Return RC and Output osm project-delete ${project}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+
+
+Delete Project And Verify
+ [Arguments] ${project}
+ Delete Project ${project}
+ ${project_list}= List Project
+ Should Not Contain ${project_list} ${project}
+
+
+Create Role
+ [Arguments] ${role}
+ ${rc} ${stdout}= Run and Return RC and Output osm role-create ${role}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List Roles
+ ${rc} ${stdout}= Run and Return RC and Output osm role-list
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+List Roles And Verify
+ [Arguments] ${role}
+ ${role_list}= List Roles
+ Should Contain ${role_list} ${role}
+
+
+Get Role Info By Name
+ [Arguments] ${role}
+ ${rc} ${stdout}= Run and Return RC and Output osm role-show ${role}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+Get Role Info By ID
+ [Arguments] ${role_id}
+ ${rc} ${stdout}= Run and Return RC and Output osm role-show ${role_id}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+ [Return] ${stdout}
+
+
+Update Role
+ [Arguments] ${role} ${feild} ${value}
+ ${rc} ${stdout}= Run and Return RC and Output osm role-update ${feild} ${value} ${role}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+ log ${stdout}
+
+
+Add Role And Verify
+ [Arguments] ${role} ${role_to_add}
+ Update Role ${role} --add ${role_to_add}
+ ${role_info}= Get Role Info By Name ${role}
+# Should Contain ${role_info} ${role_to_add}
+
+
+Delete Role
+ [Arguments] ${role}
+ ${rc} ${stdout}= Run and Return RC and Output osm role-delete ${role}
+ Should Be Equal As Integers ${rc} ${success_return_code}
+
+
+Delete Role And Verify
+ [Arguments] ${role}
+ Delete Role ${role}
+ ${role_list}= List Roles
+ Should Not Contain ${role_list} ${role}