> From: "Dan Callaghan" <[email protected]>
> To: "beaker-devel" <[email protected]>
> Sent: Thursday, 19 February, 2015 2:02:31 PM
> Subject: Re: [Beaker-devel] Receiving HTML rather than JSON despite Accept
> header
>
> Excerpts from Nick Coghlan's message of 2015-02-19 12:46 +10:00:
> > Hi folks,
> >
> > I'm trying to use the HTTP APIs documented in
> > https://beaker-project.org/docs-release-19/server-api/http.html as
> > follows:
> >
> > curl --negotiate -H 'Accept: application/json' https://<Beaker
> > server domain>
> >
> > I have a valid Kerberos ticket, but the main page just returns the
> > HTML list of systems, while the subcollections for available, free and
> > my systems return a login page redirect.
> >
> > So it appears either something is broken or the API documentation has
> > omitted a required setup step.
>
> The endpoints for listing systems (/, /available/, /free/, /mine/) don't
> actually offer JSON at all right now. Only Atom or the human-readable
> HTML with grid.
>
> The docs are a bit confusing on this point since they mention "pageable
> JSON collections" at the very top and then right below it describes the
> system listing endpoints. But those are not "pageable JSON collections".
> The only two resources that are pageable JSON collections in 19 are
> /systems/<fqdn>/activity/ and /systems/<fqdn>/commands/. As we add new
> Flask-based APIs they will be consistent.
>
> But the system listing endpoints are much, much older (Beaker 0.6) and
> are using the old TG @paginate stuff which is why they are not
> consistent with any of the newer APIs. We could probably make the docs
> call out this inconsistency more explicitly.
Indeed, that was exactly my point of confusion - I forgot that those APIs were
currently still HTML & XML only, as the intro section talked specifically about
the design of the new APIs rather than the legacy ones.
I got the main listing to work with the following:
curl --negotiate 'https://<server>?tg_format=atom&list_tgp_limit=0'
And figured out this sed hack to extract just the host names:
curl -s --negotiate 'https://<server>?tg_format=atom&list_tgp_limit=0' |
sed -n 's_.*<id>.*/view/\(.*\)</id>.*_\1_p'
However, the qualified listings still came back as a login redirect rather than
giving me any data, even with a valid Kerberos ticket and passing --negotiate
to curl.
Cheers,
Nick.
--
Nick Coghlan
Red Hat Hosted & Shared Services
Software Engineering & Development, Brisbane
HSS Provisioning Architect
_______________________________________________
Beaker-devel mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/beaker-devel