opscenter API REST quando a autenticação está ativada

3

Eu ativei a autenticação no meu nó do opscenter de acordo com o presente . Eu tenho um script python que invoca periodicamente ações do opscenter através das APIs REST do Opscenter. Da documentação da REST API, parecia que tudo que eu tinha que fazer era invocar esses métodos com a autenticação HTTP básica (veja isso ). Mas essas chamadas sempre falharam com um erro "o usuário deve estar logado".

Depois de pesquisar o javascript que é executado quando uso a interface web do opscenter, concluí que preciso invocar o método de login para criar uma sessão e usar essa sessão para invocar outros métodos, como:

session = requests.Session()
login_body = '{"username": "%s", "password": "%s"}' % (opsc_uname, opsc_pwd)
login_resp = session.post("http://{url}/login".format(url=opsc_url), data=login_body).json()
clusterconf = session.get("http://{url}/cluster-configs".format(url=opsc_url)).json()

A documentação da API (que afirma usar autenticação http básica) está errada? Ou estou fazendo algo incorretamente? A versão do opscenter que eu estou usando é 5.1.1

    
por Arunkumar Navasiva 23.03.2015 / 19:13

2 respostas

1

Você entendeu corretamente, o OpsCenter 5.1 usa sessões em vez de autenticação básica. Você está vendo 5.0 docs, é por isso que não foi documentado. Veja um link correto .

    
por 24.03.2015 / 14:46
0

Além do link da documentação que o usuário "arre" publicou acima quando você implementa esse método, certifique-se de não incluir as {} chaves, portanto, por exemplo, use

curl -H 'opscenter-session: d6c5e198b9b5ffeab9fd8dea6fb012aa' http://127.0.0.1:8888/permissions/user

Em vez de

curl -H 'opscenter-session: {d6c5e198b9b5ffeab9fd8dea6fb012aa}' http://127.0.0.1:8888/permissions/user
    
por 23.04.2015 / 14:50

Tags