weldr: remove Composer interface
No need to have an interface we don't really use yet. This moves fetching the list of packages out of weldr, which will ease testing.
This commit is contained in:
parent
1adbf1a4a6
commit
dd3b837d8d
2 changed files with 27 additions and 49 deletions
32
main.go
32
main.go
|
|
@ -11,32 +11,24 @@ import (
|
|||
"osbuild-composer/weldr"
|
||||
)
|
||||
|
||||
type Composer struct{}
|
||||
|
||||
func (c *Composer) Repositories() []string {
|
||||
return []string{"fedora-30"}
|
||||
}
|
||||
|
||||
func (c *Composer) RepositoryConfig(name string) (rpmmd.RepoConfig, bool) {
|
||||
if name != "fedora-30" {
|
||||
return rpmmd.RepoConfig{}, false
|
||||
}
|
||||
|
||||
return rpmmd.RepoConfig{
|
||||
Id: "fedora-30",
|
||||
Name: "Fedora 30",
|
||||
Metalink: "https://mirrors.fedoraproject.org/metalink?repo=fedora-30&arch=x86_64",
|
||||
}, true
|
||||
}
|
||||
|
||||
func main() {
|
||||
listener, err := net.Listen("unix", "/run/weldr/api.socket")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
composer := Composer{}
|
||||
api := weldr.New(&composer)
|
||||
repo := rpmmd.RepoConfig{
|
||||
Id: "fedora-30",
|
||||
Name: "Fedora 30",
|
||||
Metalink: "https://mirrors.fedoraproject.org/metalink?repo=fedora-30&arch=x86_64",
|
||||
}
|
||||
|
||||
packages, err := rpmmd.FetchPackageList(repo)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
api := weldr.New(repo, packages)
|
||||
server := http.Server{Handler: api}
|
||||
|
||||
shutdownDone := make(chan struct{}, 1)
|
||||
|
|
|
|||
44
weldr/api.go
44
weldr/api.go
|
|
@ -13,33 +13,19 @@ import (
|
|||
)
|
||||
|
||||
type API struct {
|
||||
store *store
|
||||
composer Composer
|
||||
store *store
|
||||
|
||||
baseRepo rpmmd.RepoConfig
|
||||
repo rpmmd.RepoConfig
|
||||
packages rpmmd.PackageList
|
||||
|
||||
router *httprouter.Router
|
||||
}
|
||||
|
||||
type Composer interface {
|
||||
Repositories() []string
|
||||
RepositoryConfig(name string) (rpmmd.RepoConfig, bool)
|
||||
}
|
||||
|
||||
func New(composer Composer) *API {
|
||||
func New(repo rpmmd.RepoConfig, packages rpmmd.PackageList) *API {
|
||||
api := &API{
|
||||
composer: composer,
|
||||
store: newStore(),
|
||||
}
|
||||
|
||||
// only one repository right now
|
||||
api.baseRepo, _ = composer.RepositoryConfig(composer.Repositories()[0])
|
||||
|
||||
var err error
|
||||
api.packages, err = rpmmd.FetchPackageList(api.baseRepo)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
repo: repo,
|
||||
packages: packages,
|
||||
}
|
||||
|
||||
// sample blueprint
|
||||
|
|
@ -142,7 +128,7 @@ func (api *API) sourceListHandler(writer http.ResponseWriter, request *http.Requ
|
|||
}
|
||||
|
||||
json.NewEncoder(writer).Encode(reply{
|
||||
Sources: []string{api.baseRepo.Name},
|
||||
Sources: []string{api.repo.Name},
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -164,27 +150,27 @@ func (api *API) sourceInfoHandler(writer http.ResponseWriter, request *http.Requ
|
|||
|
||||
// we only have one repository
|
||||
names := strings.Split(params.ByName("sources"), ",")
|
||||
if names[0] != api.baseRepo.Name && names[0] != "*" {
|
||||
if names[0] != api.repo.Name && names[0] != "*" {
|
||||
statusResponseError(writer, http.StatusBadRequest, "repository not found: "+names[0])
|
||||
return
|
||||
}
|
||||
|
||||
cfg := sourceConfig{
|
||||
Id: api.baseRepo.Id,
|
||||
Name: api.baseRepo.Name,
|
||||
Id: api.repo.Id,
|
||||
Name: api.repo.Name,
|
||||
CheckGPG: true,
|
||||
CheckSSL: true,
|
||||
System: true,
|
||||
}
|
||||
|
||||
if api.baseRepo.BaseURL != "" {
|
||||
cfg.URL = api.baseRepo.BaseURL
|
||||
if api.repo.BaseURL != "" {
|
||||
cfg.URL = api.repo.BaseURL
|
||||
cfg.Type = "yum-baseurl"
|
||||
} else if api.baseRepo.Metalink != "" {
|
||||
cfg.URL = api.baseRepo.Metalink
|
||||
} else if api.repo.Metalink != "" {
|
||||
cfg.URL = api.repo.Metalink
|
||||
cfg.Type = "yum-metalink"
|
||||
} else if api.baseRepo.MirrorList != "" {
|
||||
cfg.URL = api.baseRepo.MirrorList
|
||||
} else if api.repo.MirrorList != "" {
|
||||
cfg.URL = api.repo.MirrorList
|
||||
cfg.Type = "yum-mirrorlist"
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue