Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC-0030 - Add support to Diego for file based service bindings #100

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
5 changes: 5 additions & 0 deletions depot/containerstore/containerstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ type containerStore struct {
enableUnproxiedPortMappings bool
advertisePreferenceForInstanceAddress bool

serviceBindingRoot ServiceBindingRootImplementor

jsonMarshaller func(any) ([]byte, error)
}

Expand All @@ -110,6 +112,7 @@ func New(
cellID string,
enableUnproxiedPortMappings bool,
advertisePreferenceForInstanceAddress bool,
serviceBindingRoot ServiceBindingRootImplementor,
jsonMarshaller func(any) ([]byte, error),
) ContainerStore {
return &containerStore{
Expand All @@ -134,6 +137,7 @@ func New(

enableUnproxiedPortMappings: enableUnproxiedPortMappings,
advertisePreferenceForInstanceAddress: advertisePreferenceForInstanceAddress,
serviceBindingRoot: serviceBindingRoot,
jsonMarshaller: jsonMarshaller,
}
}
Expand Down Expand Up @@ -170,6 +174,7 @@ func (cs *containerStore) Reserve(logger lager.Logger, traceID string, req *exec
cs.cellID,
cs.enableUnproxiedPortMappings,
cs.advertisePreferenceForInstanceAddress,
cs.serviceBindingRoot,
cs.jsonMarshaller,
))

Expand Down
42 changes: 38 additions & 4 deletions depot/containerstore/containerstore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,11 @@ var _ = Describe("Container Store", func() {
logManager *containerstorefakes.FakeLogManager
logStreamer *fake_log_streamer.FakeLogStreamer

clock *fakeclock.FakeClock
eventEmitter *eventfakes.FakeHub
metronClient *mfakes.FakeIngressClient
rootFSSizer *configurationfakes.FakeRootFSSizer
clock *fakeclock.FakeClock
eventEmitter *eventfakes.FakeHub
metronClient *mfakes.FakeIngressClient
rootFSSizer *configurationfakes.FakeRootFSSizer
serviceBindingRootHandler *containerstorefakes.FakeServiceBindingRootImplementor
)

var containerState = func(guid string) func() executor.State {
Expand Down Expand Up @@ -113,6 +114,7 @@ var _ = Describe("Container Store", func() {
clock = fakeclock.NewFakeClock(time.Now())
eventEmitter = &eventfakes.FakeHub{}
rootFSSizer = new(configurationfakes.FakeRootFSSizer)
serviceBindingRootHandler = &containerstorefakes.FakeServiceBindingRootImplementor{}

credManager.RunnerReturns(ifrit.RunFunc(func(signals <-chan os.Signal, ready chan<- struct{}) error {
close(ready)
Expand Down Expand Up @@ -164,6 +166,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)

Expand Down Expand Up @@ -378,6 +381,10 @@ var _ = Describe("Container Store", func() {
{Name: "beep", Value: "booop"},
}

serviceBindingFiles := []executor.ServiceBindingFiles{
{Name: "/redis/username", Value: "redis_username"},
}

logGuid = "log-guid-foo"
runInfo = executor.RunInfo{
RootFSPath: "/foo/bar",
Expand Down Expand Up @@ -406,6 +413,7 @@ var _ = Describe("Container Store", func() {
},
EnableContainerProxy: true,
LogRateLimitBytesPerSecond: logRateUnlimitedBytesPerSecond,
ServiceBindingFiles: serviceBindingFiles,
}

runReq = &executor.RunRequest{
Expand Down Expand Up @@ -489,6 +497,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)
})
Expand Down Expand Up @@ -645,6 +654,26 @@ var _ = Describe("Container Store", func() {
Expect(containerSpec.Env).To(Equal(expectedEnv))
})

It("creates container with service binding root", func() {
expectedMount := garden.BindMount{
SrcPath: "/var/vcap/data/rep/shared/garden/service_binding_root",
DstPath: "/etc/cf-instance-binding",
Mode: garden.BindMountModeRO,
Origin: garden.BindMountOriginHost,
}

dependencyManager.DownloadCachedDependenciesReturns(containerstore.BindMounts{
GardenBindMounts: []garden.BindMount{expectedMount},
}, nil)

_, err := containerStore.Create(logger, "some-trace-id", containerGuid)
Expect(err).NotTo(HaveOccurred())

Expect(gardenClient.CreateCallCount()).To(Equal(1))
containerSpec := gardenClient.CreateArgsForCall(0)
Expect(containerSpec.BindMounts).To(ContainElement(expectedMount))
})

It("sets the correct external and internal ip", func() {
container, err := containerStore.Create(logger, "some-trace-id", containerGuid)
Expect(err).NotTo(HaveOccurred())
Expand Down Expand Up @@ -713,6 +742,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)
})
Expand Down Expand Up @@ -1254,6 +1284,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)

Expand Down Expand Up @@ -1344,6 +1375,7 @@ var _ = Describe("Container Store", func() {
cellID,
false,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)
})
Expand Down Expand Up @@ -2493,6 +2525,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
fm.Marshal,
)
})
Expand Down Expand Up @@ -3066,6 +3099,7 @@ var _ = Describe("Container Store", func() {
cellID,
true,
advertisePreferenceForInstanceAddress,
serviceBindingRootHandler,
json.Marshal,
)

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading