github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/s3_folders.go (about) 1 package api 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 type S3Folders struct { 9 clusterName string 10 s3URI string 11 } 12 13 func NewS3Folders(s3URI string, clusterName string) S3Folders { 14 return S3Folders{ 15 s3URI: s3URI, 16 clusterName: clusterName, 17 } 18 } 19 20 func (n S3Folders) root() S3Folder { 21 return newS3Folder(n.s3URI) 22 } 23 24 func (n S3Folders) Cluster() S3Folder { 25 return n.root().subFolder(fmt.Sprintf("kube-aws/clusters/%s", n.clusterName)) 26 } 27 28 func (n S3Folders) ClusterBackups() S3Folder { 29 return n.Cluster().subFolder("backup") 30 } 31 32 func (n S3Folders) ClusterExportedStacks() S3Folder { 33 return n.Cluster().subFolder("exported/stacks") 34 } 35 36 type S3Folder struct { 37 s3URI string 38 } 39 40 func newS3Folder(uri string) S3Folder { 41 return S3Folder{ 42 s3URI: strings.TrimSuffix(uri, "/"), 43 } 44 } 45 46 func (f S3Folder) Path() string { 47 uri := strings.TrimSuffix(f.s3URI, "/") 48 return strings.TrimPrefix(uri, "s3://") 49 } 50 51 func (f S3Folder) URI() string { 52 return f.s3URI 53 } 54 55 func (f S3Folder) subFolder(name string) S3Folder { 56 return newS3Folder(fmt.Sprintf("%s/%s", f.s3URI, name)) 57 }