//downloadManifest downloads manifest file from s3 bucket func (m *updateManager) downloadManifest(log log.T, util updateutil.T, pluginInput *UpdatePluginInput, context *updateutil.InstanceContext, out *UpdatePluginOutput) (manifest *Manifest, err error) { //Download source var updateDownload = "" updateDownload, err = util.CreateUpdateDownloadFolder() if err != nil { return nil, err } downloadInput := artifact.DownloadInput{ SourceURL: pluginInput.Source, DestinationDirectory: updateDownload, } downloadOutput, downloadErr := fileDownload(log, downloadInput) if downloadErr != nil || downloadOutput.IsHashMatched == false || downloadOutput.LocalFilePath == "" { return nil, downloadErr } out.AppendInfo(log, "Successfully downloaded %v", downloadInput.SourceURL) return ParseManifest(log, downloadOutput.LocalFilePath, context, pluginInput.AgentName) }
//downloadUpdater downloads updater from the s3 bucket func (m *updateManager) downloadUpdater(log log.T, util updateutil.T, updaterPackageName string, manifest *Manifest, out *UpdatePluginOutput, context *updateutil.InstanceContext) (version string, err error) { var hash = "" var source = "" if version, err = manifest.LatestVersion(log, context, updaterPackageName); err != nil { return } if source, hash, err = manifest.DownloadURLAndHash(context, updaterPackageName, version); err != nil { return } var updateDownloadFolder = "" if updateDownloadFolder, err = util.CreateUpdateDownloadFolder(); err != nil { return } downloadInput := artifact.DownloadInput{ SourceURL: source, SourceHashValue: hash, SourceHashType: updateutil.HashType, DestinationDirectory: updateDownloadFolder, } downloadOutput, downloadErr := fileDownload(log, downloadInput) if downloadErr != nil || downloadOutput.IsHashMatched == false || downloadOutput.LocalFilePath == "" { errMessage := fmt.Sprintf("failed to download file reliably, %v", downloadInput.SourceURL) if downloadErr != nil { errMessage = fmt.Sprintf("%v, %v", errMessage, downloadErr.Error()) } return version, errors.New(errMessage) } out.AppendInfo(log, "Successfully downloaded %v", downloadInput.SourceURL) if uncompressErr := fileUncompress( downloadOutput.LocalFilePath, updateutil.UpdateArtifactFolder(appconfig.UpdaterArtifactsRoot, updaterPackageName, version)); uncompressErr != nil { return version, fmt.Errorf("failed to uncompress updater package, %v, %v", downloadOutput.LocalFilePath, uncompressErr.Error()) } return version, nil }