github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/packaging/dependency/mongo.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package dependency 5 6 import ( 7 "fmt" 8 9 "github.com/juju/errors" 10 11 "github.com/juju/juju/core/base" 12 "github.com/juju/juju/packaging" 13 ) 14 15 type mongoDependency struct { 16 snapChannel string 17 } 18 19 // Mongo returns a dependency for installing mongo server using the specified 20 // NUMA settings and snap channel preferences (applies to focal or later). 21 func Mongo(snapChannel string) packaging.Dependency { 22 return mongoDependency{ 23 snapChannel: snapChannel, 24 } 25 } 26 27 // PackageList implements packaging.Dependency. 28 func (dep mongoDependency) PackageList(b base.Base) ([]packaging.Package, error) { 29 if b.OS != base.UbuntuOS { 30 return nil, errors.NotSupportedf("installing mongo on base %q", b) 31 } 32 33 var ( 34 snapList []packaging.Package 35 pm = packaging.AptPackageManager 36 ) 37 38 if dep.snapChannel == "" { 39 return nil, errors.NotValidf("snap channel for mongo dependency") 40 } 41 42 snapList = append( 43 snapList, 44 packaging.Package{ 45 Name: "juju-db", 46 InstallOptions: fmt.Sprintf("--channel %s", dep.snapChannel), 47 PackageManager: packaging.SnapPackageManager, 48 }, 49 ) 50 51 return append( 52 packaging.MakePackageList(pm, ""), 53 snapList..., 54 ), nil 55 }