From e440ba53cb3527db86d5fbf7c0afaf286ae75324 Mon Sep 17 00:00:00 2001 From: Anthony Lapenna Date: Wed, 12 Dec 2018 09:46:05 +1300 Subject: [PATCH] feat(api): migrate template data logo URLs (#2537) --- api/bolt/datastore.go | 1 + api/bolt/migrator/migrate_dbversion14.go | 24 ++++++++++++++++++++++++ api/bolt/migrator/migrator.go | 9 +++++++++ api/portainer.go | 6 ++++-- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/api/bolt/datastore.go b/api/bolt/datastore.go index bc899c526..0e94ad157 100644 --- a/api/bolt/datastore.go +++ b/api/bolt/datastore.go @@ -142,6 +142,7 @@ func (store *Store) MigrateData() error { ResourceControlService: store.ResourceControlService, SettingsService: store.SettingsService, StackService: store.StackService, + TemplateService: store.TemplateService, UserService: store.UserService, VersionService: store.VersionService, FileService: store.fileService, diff --git a/api/bolt/migrator/migrate_dbversion14.go b/api/bolt/migrator/migrate_dbversion14.go index f74e4ae05..ebaa4495e 100644 --- a/api/bolt/migrator/migrate_dbversion14.go +++ b/api/bolt/migrator/migrate_dbversion14.go @@ -1,5 +1,11 @@ package migrator +import ( + "strings" + + "github.com/portainer/portainer" +) + func (m *Migrator) updateSettingsToDBVersion15() error { legacySettings, err := m.settingsService.Settings() if err != nil { @@ -9,3 +15,21 @@ func (m *Migrator) updateSettingsToDBVersion15() error { legacySettings.EnableHostManagementFeatures = false return m.settingsService.UpdateSettings(legacySettings) } + +func (m *Migrator) updateTemplatesToVersion15() error { + legacyTemplates, err := m.templateService.Templates() + if err != nil { + return err + } + + for _, template := range legacyTemplates { + template.Logo = strings.Replace(template.Logo, "https://portainer.io/images", portainer.AssetsServerURL, -1) + + err = m.templateService.UpdateTemplate(template.ID, &template) + if err != nil { + return err + } + } + + return nil +} diff --git a/api/bolt/migrator/migrator.go b/api/bolt/migrator/migrator.go index 1fc16c930..a44dac96c 100644 --- a/api/bolt/migrator/migrator.go +++ b/api/bolt/migrator/migrator.go @@ -8,6 +8,7 @@ import ( "github.com/portainer/portainer/bolt/resourcecontrol" "github.com/portainer/portainer/bolt/settings" "github.com/portainer/portainer/bolt/stack" + "github.com/portainer/portainer/bolt/template" "github.com/portainer/portainer/bolt/user" "github.com/portainer/portainer/bolt/version" ) @@ -22,6 +23,7 @@ type ( resourceControlService *resourcecontrol.Service settingsService *settings.Service stackService *stack.Service + templateService *template.Service userService *user.Service versionService *version.Service fileService portainer.FileService @@ -36,6 +38,7 @@ type ( ResourceControlService *resourcecontrol.Service SettingsService *settings.Service StackService *stack.Service + TemplateService *template.Service UserService *user.Service VersionService *version.Service FileService portainer.FileService @@ -51,6 +54,7 @@ func NewMigrator(parameters *Parameters) *Migrator { endpointService: parameters.EndpointService, resourceControlService: parameters.ResourceControlService, settingsService: parameters.SettingsService, + templateService: parameters.TemplateService, stackService: parameters.StackService, userService: parameters.UserService, versionService: parameters.VersionService, @@ -192,6 +196,11 @@ func (m *Migrator) Migrate() error { if err != nil { return err } + + err = m.updateTemplatesToVersion15() + if err != nil { + return err + } } return m.versionService.StoreDBVersion(portainer.DBVersion) diff --git a/api/portainer.go b/api/portainer.go index 698faae76..2eb2a99c5 100644 --- a/api/portainer.go +++ b/api/portainer.go @@ -780,10 +780,12 @@ const ( APIVersion = "1.20-dev" // DBVersion is the version number of the Portainer database DBVersion = 15 + // AssetsServerURL represents the URL of the Portainer asset server + AssetsServerURL = "https://portainer-io-assets.sfo2.digitaloceanspaces.com" // MessageOfTheDayURL represents the URL where Portainer MOTD message can be retrieved - MessageOfTheDayURL = "https://portainer-io-assets.sfo2.digitaloceanspaces.com/motd.html" + MessageOfTheDayURL = AssetsServerURL + "/motd.html" // ExtensionDefinitionsURL represents the URL where Portainer extension definitions can be retrieved - ExtensionDefinitionsURL = "https://portainer-io-assets.sfo2.digitaloceanspaces.com/extensions.json" + ExtensionDefinitionsURL = AssetsServerURL + "/extensions.json" // PortainerAgentHeader represents the name of the header available in any agent response PortainerAgentHeader = "Portainer-Agent" // PortainerAgentTargetHeader represent the name of the header containing the target node name