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 .
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
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 .
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
Tags opscenter