From e00e0a04925a169ec26b5e93577d492b403987fe Mon Sep 17 00:00:00 2001
From: Renan DelValle <renanidelvalle+noreply@gmail.com>
Date: Tue, 11 Dec 2018 16:49:37 -0800
Subject: [PATCH] Changing all containers to use pointer receiver since they
 are sharing around a single pointer inside the struct, I want to convey to
 users that the data is all being shared by a pointer.

---
 container.go | 37 +++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/container.go b/container.go
index 5735ec8..a79aaf6 100644
--- a/container.go
+++ b/container.go
@@ -22,28 +22,24 @@ type Container interface {
 	Build() *aurora.Container
 }
 
-type MesosContainer struct {
-	container *aurora.MesosContainer
-}
-
 type DockerContainer struct {
 	container *aurora.DockerContainer
 }
 
-func NewDockerContainer() DockerContainer {
-	return DockerContainer{container: aurora.NewDockerContainer()}
+func NewDockerContainer() *DockerContainer {
+	return &DockerContainer{container: aurora.NewDockerContainer()}
 }
 
-func (c DockerContainer) Build() *aurora.Container {
+func (c *DockerContainer) Build() *aurora.Container {
 	return &aurora.Container{Docker: c.container}
 }
 
-func (c DockerContainer) Image(image string) DockerContainer {
+func (c *DockerContainer) Image(image string) *DockerContainer {
 	c.container.Image = image
 	return c
 }
 
-func (c DockerContainer) AddParameter(name, value string) DockerContainer {
+func (c *DockerContainer) AddParameter(name, value string) *DockerContainer {
 	c.container.Parameters = append(c.container.Parameters, &aurora.DockerParameter{
 		Name:  name,
 		Value: value,
@@ -51,15 +47,19 @@ func (c DockerContainer) AddParameter(name, value string) DockerContainer {
 	return c
 }
 
-func NewMesosContainer() MesosContainer {
-	return MesosContainer{container: aurora.NewMesosContainer()}
+type MesosContainer struct {
+	container *aurora.MesosContainer
 }
 
-func (c MesosContainer) Build() *aurora.Container {
+func NewMesosContainer() *MesosContainer {
+	return &MesosContainer{container: aurora.NewMesosContainer()}
+}
+
+func (c *MesosContainer) Build() *aurora.Container {
 	return &aurora.Container{Mesos: c.container}
 }
 
-func (c MesosContainer) DockerImage(name, tag string) MesosContainer {
+func (c *MesosContainer) DockerImage(name, tag string) *MesosContainer {
 	if c.container.Image == nil {
 		c.container.Image = aurora.NewImage()
 	}
@@ -68,7 +68,7 @@ func (c MesosContainer) DockerImage(name, tag string) MesosContainer {
 	return c
 }
 
-func (c MesosContainer) AppcImage(name, imageId string) MesosContainer {
+func (c *MesosContainer) AppcImage(name, imageId string) *MesosContainer {
 	if c.container.Image == nil {
 		c.container.Image = aurora.NewImage()
 	}
@@ -76,3 +76,12 @@ func (c MesosContainer) AppcImage(name, imageId string) MesosContainer {
 	c.container.Image.Appc = &aurora.AppcImage{Name: name, ImageId: imageId}
 	return c
 }
+
+func (c *MesosContainer) AddVolume(hostPath, containerPath string, mode aurora.Mode) *MesosContainer {
+	c.container.Volumes = append(c.container.Volumes, &aurora.Volume{
+		HostPath:      hostPath,
+		ContainerPath: containerPath,
+		Mode:          mode})
+
+	return c
+}