func NewProvider(logger boshlog.Logger, platform boshplatform.Platform) (p Provider) { metadataService := NewConcreteMetadataService( "http://169.254.169.254", NewDigDNSResolver(logger), ) // Currently useServerNameAsID boolean setting is hard coded below // because we do not support arbitrary infrastructure configurations awsRegistry := NewConcreteRegistry(metadataService, false) openstackRegistry := NewConcreteRegistry(metadataService, true) fs := platform.GetFs() dirProvider := platform.GetDirProvider() mappedDevicePathResolver := boshdpresolv.NewMappedDevicePathResolver(500*time.Millisecond, fs) vsphereDevicePathResolver := boshdpresolv.NewVsphereDevicePathResolver(500*time.Millisecond, fs) dummyDevicePathResolver := boshdpresolv.NewDummyDevicePathResolver() awsInfrastructure := NewAwsInfrastructure( metadataService, awsRegistry, platform, mappedDevicePathResolver, logger, ) openstackInfrastructure := NewOpenstackInfrastructure( metadataService, openstackRegistry, platform, mappedDevicePathResolver, logger, ) p.infrastructures = map[string]Infrastructure{ "aws": awsInfrastructure, "openstack": openstackInfrastructure, "dummy": NewDummyInfrastructure(fs, dirProvider, platform, dummyDevicePathResolver), "warden": NewWardenInfrastructure(dirProvider, platform, dummyDevicePathResolver), "vsphere": NewVsphereInfrastructure(platform, vsphereDevicePathResolver, logger), } return }
platform = fakeplatform.NewFakePlatform() logger = boshlog.NewLogger(boshlog.LevelNone) provider = NewProvider(logger, platform) }) Describe("Get", func() { It("returns aws infrastructure", func() { metadataService := NewConcreteMetadataService( "http://169.254.169.254", NewDigDNSResolver(logger), ) registry := NewConcreteRegistry(metadataService, false) expectedDevicePathResolver := boshdpresolv.NewMappedDevicePathResolver( 500*time.Millisecond, platform.GetFs(), ) expectedInf := NewAwsInfrastructure( metadataService, registry, platform, expectedDevicePathResolver, logger, ) inf, err := provider.Get("aws") Expect(err).ToNot(HaveOccurred()) Expect(inf).To(Equal(expectedInf)) })