Skip to content

Commit

Permalink
implementes openstack metadata api. fixes #101
Browse files Browse the repository at this point in the history
  • Loading branch information
BugRoger committed Nov 15, 2017
1 parent 57bb743 commit 56692ec
Show file tree
Hide file tree
Showing 15 changed files with 1,588 additions and 10 deletions.
114 changes: 114 additions & 0 deletions pkg/api/client/operations/get_openstack_metadata_parameters.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

112 changes: 112 additions & 0 deletions pkg/api/client/operations/get_openstack_metadata_responses.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 29 additions & 0 deletions pkg/api/client/operations/operations_client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions pkg/api/handlers/get_openstack_metadata.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package handlers

import (
"github.com/go-openapi/runtime/middleware"
"github.com/gophercloud/gophercloud/openstack/identity/v3/tokens"
"github.com/sapcc/kubernikus/pkg/api"
"github.com/sapcc/kubernikus/pkg/api/models"
"github.com/sapcc/kubernikus/pkg/api/rest/operations"
"github.com/sapcc/kubernikus/pkg/client/openstack"
)

func NewGetOpenstackMetadata(rt *api.Runtime) operations.GetOpenstackMetadataHandler {
return &getOpenstackMetadata{rt}
}

type getOpenstackMetadata struct {
*api.Runtime
}

func (d *getOpenstackMetadata) Handle(params operations.GetOpenstackMetadataParams, principal *models.Principal) middleware.Responder {
tokenID := params.HTTPRequest.Header.Get("X-Auth-Token")

authOptions := &tokens.AuthOptions{
IdentityEndpoint: principal.AuthURL,
TokenID: tokenID,
AllowReauth: true,
Scope: tokens.Scope{
ProjectID: principal.Account,
},
}

client, err := openstack.NewScopedClient(authOptions)
if err != nil {
return NewErrorResponse(&operations.GetOpenstackMetadataDefault{}, 500, err.Error())
}

openstackMetadata, err := client.GetMetadata()
if err != nil {
return NewErrorResponse(&operations.GetOpenstackMetadataDefault{}, 500, err.Error())
}

return operations.NewGetOpenstackMetadataOK().WithPayload(openstackMetadata)
}
Loading

0 comments on commit 56692ec

Please sign in to comment.