Skip to content

Instantly share code, notes, and snippets.

@sboily
Last active June 15, 2016 04:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sboily/fdcd1f1922a62b443677fb2cb097f200 to your computer and use it in GitHub Desktop.
Save sboily/fdcd1f1922a62b443677fb2cb097f200 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
from xivo_auth_client import Client as Auth
from xivo_confd_client import Client as Confd
import sys
# Please add a web service user with acl confd.#
# To use ./add-user Sylvain Boily 8010
username = "change_it" # Fill with your username
password = "change_it" # Fill with your password
################ Do no modify ##############
firstname = sys.argv[1]
lastname = sys.argv[2]
extension = sys.argv[3]
data = {}
error = None
def get_token(username, password):
token_data = auth.token.new('xivo_service', expiration=60)
return token_data['token']
def create_user(user):
try:
u = confd.users.create(user)
return u['uuid']
except Exception as e:
print 'There is an error to create user :', e
delete_on_error(data)
def create_extension(extension):
try:
e = confd.extensions.create(extension)
return e['id']
except Exception as e:
print 'There is an error to create extension :', e
delete_on_error(data)
def create_line(line):
try:
l = confd.lines.create(extension)
return l['id']
except Exception as e:
print 'There is an error to create extension :', e
delete_on_error(data)
def create_endpoint_sip(endpoint):
try:
sip = confd.endpoints_sip.create(endpoint)
return sip['id']
except Exception as e:
print 'There is an error to create endpoint SIP :', e
delete_on_error(data)
def associate_user(data):
confd.endpoints_sip.relations(data['id_endpoint_sip']).associate_line(data['id_line'])
confd.users.relations(data['uuid']).add_line(data['id_line'])
confd.extensions.relations(data['id_exten']).add_line(data['id_line'])
def delete_on_error(data):
global error
error = 1
try:
confd.users.delete(data['uuid'])
confd.extensions.delete(data['id_exten'])
confd.line.delete(data['id_line'])
confd.endpoints_sip.delete(data['id_endpoint_sip'])
except:
pass
auth = Auth('127.0.0.1', username=username, password=password, verify_certificate=False)
token = get_token(username, password)
confd = Confd('localhost', verify_certificate=False, token=token)
user = {
'firstname': firstname,
'lastname': lastname
}
data['uuid'] = create_user(user)
extension = {
'context': 'default',
'exten' : extension
}
data['id_exten'] = create_extension(extension)
line = {
'context': 'default'
}
data['id_line'] = create_line(line)
endpoint = {
'type': 'friend',
'host': 'dynamic'
}
data['id_endpoint_sip'] = create_endpoint_sip(endpoint)
if data and error != 1:
associate_user(data)
print data
auth.token.revoke(token)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment