Skip to content

Commit

Permalink
Merge pull request #235 from kaleido-io/version-manifest-fetching
Browse files Browse the repository at this point in the history
Fix version manifest fetching
  • Loading branch information
nguyer authored Jan 23, 2023
2 parents 80c9a10 + 75320d7 commit 8ad1838
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 14 deletions.
2 changes: 1 addition & 1 deletion cmd/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ func init() {
initCmd.Flags().StringVarP(&initOptions.BlockchainNodeProvider, "blockchain-node", "n", "geth", fmt.Sprintf("Blockchain node type to use. Options are: %v", fftypes.FFEnumValues(types.BlockchainNodeProvider)))
initCmd.PersistentFlags().StringArrayVarP(&initOptions.TokenProviders, "token-providers", "t", []string{"erc20_erc721"}, fmt.Sprintf("Token providers to use. Options are: %v", fftypes.FFEnumValues(types.TokenProvider)))
initCmd.PersistentFlags().IntVarP(&initOptions.ExternalProcesses, "external", "e", 0, "Manage a number of FireFly core processes outside of the docker-compose stack - useful for development and debugging")
initCmd.PersistentFlags().StringVarP(&initOptions.FireFlyVersion, "release", "r", "latest", "Select the FireFly release version to use")
initCmd.PersistentFlags().StringVarP(&initOptions.FireFlyVersion, "release", "r", "latest", fmt.Sprintf("Select the FireFly release version to use. Options are: %v", fftypes.FFEnumValues(types.ReleaseChannelSelection)))
initCmd.PersistentFlags().StringVarP(&initOptions.ManifestPath, "manifest", "m", "", "Path to a manifest.json file containing the versions of each FireFly microservice to use. Overrides the --release flag.")
initCmd.PersistentFlags().BoolVar(&promptNames, "prompt-names", false, "Prompt for org and node names instead of using the defaults")
initCmd.PersistentFlags().BoolVar(&initOptions.PrometheusEnabled, "prometheus-enabled", false, "Enables Prometheus metrics exposition and aggregation to a shared Prometheus server")
Expand Down
47 changes: 38 additions & 9 deletions internal/core/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import (
"github.com/hyperledger/firefly-common/pkg/fftypes"
)

func GetManifestForReleaseChannel(releaseChannel fftypes.FFEnum) (*types.VersionManifest, error) {
func GetManifestForChannel(releaseChannel fftypes.FFEnum) (*types.VersionManifest, error) {
dockerTag := releaseChannel.String()
if releaseChannel == types.ReleaseChannelStable {
dockerTag = "latest"
Expand All @@ -40,23 +40,35 @@ func GetManifestForReleaseChannel(releaseChannel fftypes.FFEnum) (*types.Version
return nil, err
}

manifest, err := GetReleaseManifest(gitCommit)
sha, err := getSHA(constants.FireFlyCoreImageName, dockerTag)
if err != nil {
return nil, err
}

manifest, err := getManifest(gitCommit)
if err != nil {
return nil, err
}

if manifest.FireFly == nil {
// Fill in the FireFly version number
manifest.FireFly = &types.ManifestEntry{
Image: "ghcr.io/hyperledger/firefly",
Tag: dockerTag,
SHA: sha,
}
}

return manifest, nil
}

func GetReleaseManifest(version string) (*types.VersionManifest, error) {
manifest := &types.VersionManifest{}
if err := request("GET", fmt.Sprintf("https://raw.githubusercontent.com/hyperledger/firefly/%s/manifest.json", version), nil, &manifest); err != nil {
func GetManifestForRelease(version string) (*types.VersionManifest, error) {
sha, err := getSHA(constants.FireFlyCoreImageName, version)
if err != nil {
return nil, err
}

imageName := fmt.Sprintf("%s:%s", constants.FireFlyCoreImageName, version)

imageDigest, err := docker.GetImageDigest(imageName)
manifest, err := getManifest(version)
if err != nil {
return nil, err
}
Expand All @@ -66,13 +78,30 @@ func GetReleaseManifest(version string) (*types.VersionManifest, error) {
manifest.FireFly = &types.ManifestEntry{
Image: "ghcr.io/hyperledger/firefly",
Tag: version,
SHA: imageDigest[7:],
SHA: sha,
}
}

return manifest, nil
}

func getManifest(version string) (*types.VersionManifest, error) {
manifest := &types.VersionManifest{}
if err := request("GET", fmt.Sprintf("https://raw.githubusercontent.com/hyperledger/firefly/%s/manifest.json", version), nil, &manifest); err != nil {
return nil, err
}
return manifest, nil
}

func getSHA(imageName, imageTag string) (string, error) {
digest, err := docker.GetImageDigest(fmt.Sprintf("%s:%s", imageName, imageTag))
if err != nil {
return "", err
} else {
return digest[7:], nil
}
}

func ReadManifestFile(p string) (*types.VersionManifest, error) {
d, err := ioutil.ReadFile(p)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions internal/core/manifest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
)

func TestGetFireFlyManifest(T *testing.T) {
manifest, err := GetReleaseManifest("main")
manifest, err := GetManifestForRelease("main")
assert.NoError(T, err)
assert.NotNil(T, manifest)
assert.NotNil(T, manifest.FireFly)
Expand All @@ -36,7 +36,7 @@ func TestGetFireFlyManifest(T *testing.T) {
}

func TestGetLatestReleaseManifest(T *testing.T) {
manifest, err := GetManifestForReleaseChannel(types.ReleaseChannelStable)
manifest, err := GetManifestForChannel(types.ReleaseChannelStable)
assert.NoError(T, err)
assert.NotNil(T, manifest)
assert.NotNil(T, manifest.FireFly)
Expand Down
4 changes: 2 additions & 2 deletions internal/stacks/stack_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,12 @@ func (s *StackManager) InitStack(options *types.InitOptions) (err error) {
} else {
// Otherwise, fetch the manifest file from GitHub for the specified version
if options.FireFlyVersion == "" || strings.ToLower(options.FireFlyVersion) == "latest" {
manifest, err = core.GetManifestForReleaseChannel(fftypes.FFEnum(options.ReleaseChannel))
manifest, err = core.GetManifestForChannel(fftypes.FFEnum(options.ReleaseChannel))
if err != nil {
return err
}
} else {
manifest, err = core.GetReleaseManifest(options.FireFlyVersion)
manifest, err = core.GetManifestForRelease(options.FireFlyVersion)
if err != nil {
return err
}
Expand Down
1 change: 1 addition & 0 deletions pkg/types/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ const ReleaseChannelSelection = "release_channel"

var (
ReleaseChannelStable = fftypes.FFEnumValue(ReleaseChannelSelection, "stable")
ReleaseChannelHead = fftypes.FFEnumValue(ReleaseChannelSelection, "head")
ReleaseChannelAlpha = fftypes.FFEnumValue(ReleaseChannelSelection, "alpha")
ReleaseChannelBeta = fftypes.FFEnumValue(ReleaseChannelSelection, "beta")
ReleaseChannelRC = fftypes.FFEnumValue(ReleaseChannelSelection, "rc")
Expand Down

0 comments on commit 8ad1838

Please sign in to comment.