Skip to content
This repository has been archived by the owner on Jan 20, 2023. It is now read-only.

Commit

Permalink
Make broker download metas using new naming convention
Browse files Browse the repository at this point in the history
Details at eclipse-che/che-plugin-registry#55
Signed-off-by: Oleksandr Garagatyi <ogaragat@redhat.com>
  • Loading branch information
Oleksandr Garagatyi committed Apr 19, 2019
1 parent adf8005 commit e42741f
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 28 deletions.
17 changes: 8 additions & 9 deletions brokers/unified/broker.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const VscodePluginType = "vs code extension"

// RegistryURLFormat specifies the format string for registry urls
// when downloading metas
const RegistryURLFormat = "%s/plugins/%s/%s/meta.yaml"
const RegistryURLFormat = "%s/plugins/%s/meta.yaml"

// Broker is used to process Che plugins
type Broker struct {
Expand Down Expand Up @@ -150,30 +150,29 @@ func (b *Broker) ProcessPlugins(metas []model.PluginMeta) error {
func (b *Broker) getPluginMetas(plugins []model.PluginFQN, defaultRegistry string) ([]model.PluginMeta, error) {
metas := make([]model.PluginMeta, 0, len(plugins))
for _, plugin := range plugins {
log.Printf("Fetching plugin meta.yaml for %s:%s", plugin.ID, plugin.Version)
log.Printf("Fetching plugin meta.yaml for %s", plugin.ID)
registry, err := getRegistryURL(plugin, defaultRegistry)
if err != nil {
return nil, err
}
pluginURL := fmt.Sprintf(RegistryURLFormat, registry, plugin.ID, plugin.Version)
pluginURL := fmt.Sprintf(RegistryURLFormat, registry, plugin.ID)
pluginRaw, err := b.utils.Fetch(pluginURL)
if err != nil {
if httpErr, ok := err.(*utils.HTTPError); ok {
return nil, fmt.Errorf(
"failed to fetch plugin meta.yaml for plugin '%s:%s' from registry '%s': %s. Response body: %s",
plugin.ID, plugin.Version, registry, httpErr, httpErr.Body)
"failed to fetch plugin meta.yaml for plugin '%s' from registry '%s': %s. Response body: %s",
plugin.ID, registry, httpErr, httpErr.Body)
} else {
return nil, fmt.Errorf(
"failed to fetch plugin meta.yaml for plugin '%s:%s' from registry '%s': %s",
plugin.ID, plugin.Version, registry, err)
"failed to fetch plugin meta.yaml for plugin '%s' from registry '%s': %s",
plugin.ID, registry, err)
}
}

var pluginMeta model.PluginMeta
if err := yaml.Unmarshal(pluginRaw, &pluginMeta); err != nil {
return nil, fmt.Errorf(
"failed to unmarshal downloaded meta.yaml for plugin '%s:%s': %s",
plugin.ID, plugin.Version, err)
"failed to unmarshal downloaded meta.yaml for plugin '%s': %s", plugin.ID, err)
}
metas = append(metas, pluginMeta)
}
Expand Down
24 changes: 8 additions & 16 deletions brokers/unified/broker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -366,8 +366,7 @@ func TestBroker_getPluginMetas(t *testing.T) {
fetchURL: fmt.Sprintf(
RegistryURLFormat,
defaultRegistry,
pluginFQNWithoutRegistry.ID,
pluginFQNWithoutRegistry.Version),
pluginFQNWithoutRegistry.ID),
},
mocks: successMock,
},
Expand All @@ -382,8 +381,7 @@ func TestBroker_getPluginMetas(t *testing.T) {
fetchURL: fmt.Sprintf(
RegistryURLFormat,
pluginFQNWithRegistry.Registry,
pluginFQNWithRegistry.ID,
pluginFQNWithRegistry.Version),
pluginFQNWithRegistry.ID),
},
mocks: successMock,
},
Expand All @@ -398,8 +396,7 @@ func TestBroker_getPluginMetas(t *testing.T) {
fetchURL: fmt.Sprintf(
RegistryURLFormat,
pluginFQNWithRegistry.Registry,
pluginFQNWithRegistry.ID,
pluginFQNWithRegistry.Version),
pluginFQNWithRegistry.ID),
},
mocks: successMock,
},
Expand All @@ -426,8 +423,7 @@ func TestBroker_getPluginMetas(t *testing.T) {
fetchURL: fmt.Sprintf(
RegistryURLFormat,
strings.TrimSuffix(pluginFQNWithRegistryTrailingSlash.Registry, "/"),
pluginFQNWithRegistryTrailingSlash.ID,
pluginFQNWithRegistryTrailingSlash.Version),
pluginFQNWithRegistryTrailingSlash.ID),
},
mocks: successMock,
},
Expand All @@ -442,8 +438,7 @@ func TestBroker_getPluginMetas(t *testing.T) {
fetchURL: fmt.Sprintf(
RegistryURLFormat,
defaultRegistry,
pluginFQNWithoutRegistry.ID,
pluginFQNWithoutRegistry.Version),
pluginFQNWithoutRegistry.ID),
},
mocks: successMock,
},
Expand Down Expand Up @@ -506,19 +501,16 @@ func createCheEditorMeta(ID string) model.PluginMeta {
}

var pluginFQNWithoutRegistry = model.PluginFQN{
ID: "test-no-registry",
Version: "1.0",
ID: "test-no-registry/1.0",
}

var pluginFQNWithRegistry = model.PluginFQN{
ID: "test-with-registry",
Version: "2.0",
ID: "test-with-registry/2.0",
Registry: "test-registry",
}

var pluginFQNWithRegistryTrailingSlash = model.PluginFQN{
ID: "test-with-registry-suffix",
Version: "3.0",
ID: "test-with-registry-suffix/3.0",
Registry: "test-registry/",
}

Expand Down
9 changes: 6 additions & 3 deletions model/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ type PluginMeta struct {

Name string `json:"name" yaml:"name"`

DisplayName string `json:"displayName" yaml:"displayName"`

Publisher string `json:"publisher" yaml:"publisher"`

Type string `json:"type" yaml:"type"`

Description string `json:"description" yaml:"description"`
Expand All @@ -69,9 +73,8 @@ type PluginMeta struct {
}

type PluginFQN struct {
Registry string `json:"registry,omitempty" yaml:"registry,omitempty"`
ID string `json:"id" yaml:"id"`
Version string `json:"version" yaml:"version"`
Registry string `json:"registry,omitempty" yaml:"registry,omitempty"`
ID string `json:"id" yaml:"id"`
}

type Endpoint struct {
Expand Down

0 comments on commit e42741f

Please sign in to comment.