Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 7d4abdd

Browse files
author
Ulysses Souza
committed
Remove the notion of namespace from most commands
One exception is the push command Signed-off-by: Ulysses Souza <ulysses.souza@docker.com>
1 parent 9c72172 commit 7d4abdd

15 files changed

Lines changed: 30 additions & 69 deletions

File tree

cmd/docker-app/bundle.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222

2323
type bundleOptions struct {
2424
invocationImageName string
25-
namespace string
2625
out string
2726
}
2827

@@ -38,13 +37,12 @@ func bundleCmd(dockerCli command.Cli) *cobra.Command {
3837
}
3938

4039
cmd.Flags().StringVarP(&opts.invocationImageName, "invocation-image", "i", "", "specify the name of invocation image to build")
41-
cmd.Flags().StringVar(&opts.namespace, "namespace", "", "namespace to use (default: namespace in metadata)")
4240
cmd.Flags().StringVarP(&opts.out, "out", "o", "bundle.json", "path to the output bundle.json (- for stdout)")
4341
return cmd
4442
}
4543

4644
func runBundle(dockerCli command.Cli, appName string, opts bundleOptions) error {
47-
bundle, err := makeBundle(dockerCli, appName, opts.namespace, opts.invocationImageName)
45+
bundle, err := makeBundle(dockerCli, appName, opts.invocationImageName)
4846
if err != nil {
4947
return err
5048
}
@@ -63,22 +61,22 @@ func runBundle(dockerCli command.Cli, appName string, opts bundleOptions) error
6361
return ioutil.WriteFile(opts.out, bundleBytes, 0644)
6462
}
6563

66-
func makeBundle(dockerCli command.Cli, appName, namespace, invocationImageName string) (*bundle.Bundle, error) {
64+
func makeBundle(dockerCli command.Cli, appName, invocationImageName string) (*bundle.Bundle, error) {
6765
app, err := packager.Extract(appName)
6866
if err != nil {
6967
return nil, err
7068
}
7169
defer app.Cleanup()
72-
return makeBundleFromApp(dockerCli, app, namespace, invocationImageName)
70+
return makeBundleFromApp(dockerCli, app, invocationImageName)
7371
}
7472

75-
func makeBundleFromApp(dockerCli command.Cli, app *types.App, namespace, invocationImageName string) (*bundle.Bundle, error) {
73+
func makeBundleFromApp(dockerCli command.Cli, app *types.App, invocationImageName string) (*bundle.Bundle, error) {
7674
meta := app.Metadata()
77-
invocationImageName, err := makeImageName(meta, namespace, invocationImageName, "-invoc")
75+
invocationImageName, err := makeImageName(meta, invocationImageName, "-invoc")
7876
if err != nil {
7977
return nil, err
8078
}
81-
if _, err := makeImageName(app.Metadata(), namespace, "", ""); err != nil {
79+
if _, err := makeImageName(app.Metadata(), "", ""); err != nil {
8280
return nil, err
8381
}
8482

@@ -102,16 +100,10 @@ func makeBundleFromApp(dockerCli command.Cli, app *types.App, namespace, invocat
102100
return packager.ToCNAB(app, invocationImageName)
103101
}
104102

105-
func makeImageName(meta metadata.AppMetadata, namespace, name, suffix string) (string, error) {
103+
func makeImageName(meta metadata.AppMetadata, name, suffix string) (string, error) {
106104
if name == "" {
107105
name = fmt.Sprintf("%s:%s%s", meta.Name, meta.Version, suffix)
108106
}
109-
if namespace == "" {
110-
namespace = meta.Namespace
111-
}
112-
if namespace != "" {
113-
name = fmt.Sprintf("%s/%s", namespace, name)
114-
}
115107
if _, err := reference.ParseNormalizedNamed(name); err != nil {
116108
return "", errors.Wrapf(err, "image name %q is invalid, please check namespace, name and version fields", name)
117109
}

cmd/docker-app/bundle_test.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ func TestMakeInvocationImage(t *testing.T) {
1111
testcases := []struct {
1212
name string
1313
imageName string
14-
namespace string
1514
meta metadata.AppMetadata
1615
expected string
1716
err string
@@ -24,30 +23,27 @@ func TestMakeInvocationImage(t *testing.T) {
2423
{
2524
name: "specify-image-name-and-namespace",
2625
imageName: "my-invocation-image",
27-
namespace: "my-namespace",
28-
expected: "my-namespace/my-invocation-image",
26+
expected: "my-invocation-image",
2927
},
3028
{
3129
name: "simple-metadata",
3230
meta: metadata.AppMetadata{Name: "name", Version: "version"},
3331
expected: "name:version-invoc",
3432
},
3533
{
36-
name: "simple-metadata-with-overridden-namespace",
37-
namespace: "my-namespace",
38-
meta: metadata.AppMetadata{Name: "name", Version: "version"},
39-
expected: "my-namespace/name:version-invoc",
34+
name: "simple-metadata-with-overridden-namespace",
35+
meta: metadata.AppMetadata{Name: "name", Version: "version"},
36+
expected: "name:version-invoc",
4037
},
4138
{
4239
name: "metadata-with-namespace",
43-
meta: metadata.AppMetadata{Name: "name", Version: "version", Namespace: "namespace"},
44-
expected: "namespace/name:version-invoc",
40+
meta: metadata.AppMetadata{Name: "name", Version: "version"},
41+
expected: "name:version-invoc",
4542
},
4643
{
47-
name: "metadata-with-namespace-and-overridden-namespace",
48-
namespace: "my-namespace",
49-
meta: metadata.AppMetadata{Name: "name", Version: "version", Namespace: "namespace"},
50-
expected: "my-namespace/name:version-invoc",
44+
name: "metadata-with-namespace-and-overridden-namespace",
45+
meta: metadata.AppMetadata{Name: "name", Version: "version"},
46+
expected: "name:version-invoc",
5147
},
5248
{
5349
name: "simple-metadata",
@@ -57,7 +53,7 @@ func TestMakeInvocationImage(t *testing.T) {
5753
}
5854
for _, c := range testcases {
5955
t.Run(c.name, func(t *testing.T) {
60-
actual, err := makeImageName(c.meta, c.namespace, c.imageName, "-invoc")
56+
actual, err := makeImageName(c.meta, c.imageName, "-invoc")
6157
if c.err != "" {
6258
assert.ErrorContains(t, err, c.err)
6359
assert.Equal(t, actual, "")

cmd/docker-app/cnab.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,16 @@ func getAppNameKind(name string) (string, nameKind) {
117117
return name, nameKindFile
118118
}
119119

120-
func extractAndLoadAppBasedBundle(dockerCli command.Cli, namespace, name string) (*bundle.Bundle, error) {
120+
func extractAndLoadAppBasedBundle(dockerCli command.Cli, name string) (*bundle.Bundle, error) {
121121
app, err := packager.Extract(name)
122122
if err != nil {
123123
return nil, err
124124
}
125125
defer app.Cleanup()
126-
return makeBundleFromApp(dockerCli, app, namespace, "")
126+
return makeBundleFromApp(dockerCli, app, "")
127127
}
128128

129-
func resolveBundle(dockerCli command.Cli, namespace, name string) (*bundle.Bundle, error) {
129+
func resolveBundle(dockerCli command.Cli, name string) (*bundle.Bundle, error) {
130130
// resolution logic:
131131
// - if there is a docker-app package in working directory, or an http:// / https:// prefix, use packager.Extract result
132132
// - the name has a .json or .cnab extension and refers to an existing file or web resource: load the bundle
@@ -136,11 +136,11 @@ func resolveBundle(dockerCli command.Cli, namespace, name string) (*bundle.Bundl
136136
switch kind {
137137
case nameKindFile:
138138
if strings.HasSuffix(name, internal.AppExtension) {
139-
return extractAndLoadAppBasedBundle(dockerCli, namespace, name)
139+
return extractAndLoadAppBasedBundle(dockerCli, name)
140140
}
141141
return loader.NewDetectingLoader().Load(name)
142142
case nameKindDir, nameKindEmpty:
143-
return extractAndLoadAppBasedBundle(dockerCli, namespace, name)
143+
return extractAndLoadAppBasedBundle(dockerCli, name)
144144
case nameKindReference:
145145
// TODO: pull the bundle
146146
fmt.Fprintln(dockerCli.Err(), "WARNING: pulling a CNAB is not yet supported")

cmd/docker-app/install.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ type installOptions struct {
1717
parametersOptions
1818
credentialOptions
1919
orchestrator string
20-
namespace string
2120
kubeNamespace string
2221
stackName string
2322
insecure bool
@@ -58,7 +57,6 @@ func installCmd(dockerCli command.Cli) *cobra.Command {
5857
opts.parametersOptions.addFlags(cmd.Flags())
5958
opts.credentialOptions.addFlags(cmd.Flags())
6059
cmd.Flags().StringVarP(&opts.orchestrator, "orchestrator", "o", "", "Orchestrator to install on (swarm, kubernetes)")
61-
cmd.Flags().StringVar(&opts.namespace, "namespace", "", "Namespace to use (default: namespace in metadata)")
6260
cmd.Flags().StringVar(&opts.kubeNamespace, "kubernetes-namespace", "default", "Kubernetes namespace to install into")
6361
cmd.Flags().StringVar(&opts.stackName, "name", "", "Installation name (defaults to application name)")
6462
cmd.Flags().BoolVar(&opts.insecure, "insecure", false, "Use insecure registry, without SSL")
@@ -74,7 +72,7 @@ func runInstall(dockerCli command.Cli, appname string, opts installOptions) erro
7472
}
7573
targetContext := getTargetContext(opts.targetContext, dockerCli.CurrentContext())
7674

77-
bndl, err := resolveBundle(dockerCli, opts.namespace, appname)
75+
bndl, err := resolveBundle(dockerCli, appname)
7876
if err != nil {
7977
return err
8078
}

cmd/docker-app/push.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func pushCmd() *cobra.Command {
3333
return err
3434
},
3535
}
36-
cmd.Flags().StringVar(&opts.namespace, "namespace", "", "Namespace to use (default: namespace in metadata)")
36+
cmd.Flags().StringVar(&opts.namespace, "namespace", "", "Namespace to use")
3737
cmd.Flags().StringVarP(&opts.tag, "tag", "t", "", "Tag to use (default: version in metadata)")
3838
cmd.Flags().StringVar(&opts.repo, "repo", "", "Name of the remote repository (default: <app-name>.dockerapp)")
3939
return cmd

cmd/docker-app/upgrade.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ type upgradeOptions struct {
1515
parametersOptions
1616
credentialOptions
1717
bundleOrDockerApp string
18-
namespace string
1918
insecure bool
2019
}
2120

@@ -32,7 +31,6 @@ func upgradeCmd(dockerCli command.Cli) *cobra.Command {
3231
opts.parametersOptions.addFlags(cmd.Flags())
3332
opts.credentialOptions.addFlags(cmd.Flags())
3433
cmd.Flags().StringVar(&opts.bundleOrDockerApp, "bundle", "", "Override with new bundle or Docker App")
35-
cmd.Flags().StringVar(&opts.namespace, "namespace", "", "Namespace to use (default: namespace in metadata)")
3634
cmd.Flags().BoolVar(&opts.insecure, "insecure", false, "Use insecure registry, without SSL")
3735

3836
return cmd
@@ -49,7 +47,7 @@ func runUpgrade(dockerCli command.Cli, installationName string, opts upgradeOpti
4947
}
5048

5149
if opts.bundleOrDockerApp != "" {
52-
b, err := resolveBundle(dockerCli, opts.namespace, opts.bundleOrDockerApp)
50+
b, err := resolveBundle(dockerCli, opts.bundleOrDockerApp)
5351
if err != nil {
5452
return err
5553
}

e2e/commands_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ version: 0.1.0
8686
name: app-test
8787
# A short description of the application
8888
description: my cool app
89-
# Namespace to use when pushing to a registry. This is typically your Hub username.
90-
#namespace: myhubusername
9189
# List of application maintainers with name and email for each
9290
maintainers:
9391
- name: bob

e2e/testdata/init-singlefile.dockerapp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ version: 0.1.0
55
name: tac
66
# A short description of the application
77
description: my cool app
8-
# Namespace to use when pushing to a registry. This is typically your Hub username.
9-
#namespace: myhubusername
108
# List of application maintainers with name and email for each
119
maintainers:
1210
- name: bob

internal/packager/cnab.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package packager
22

33
import (
4-
"fmt"
5-
64
"github.com/deislabs/duffle/pkg/bundle"
75
"github.com/docker/app/internal/compose"
86
"github.com/docker/app/types"
@@ -55,10 +53,6 @@ func ToCNAB(app *types.App, invocationImageName string) (*bundle.Bundle, error)
5553
Name: m.Name,
5654
})
5755
}
58-
name := app.Metadata().Name
59-
if app.Metadata().Namespace != "" {
60-
name = fmt.Sprintf("%s/%s", app.Metadata().Namespace, name)
61-
}
6256

6357
bundleImages, err := extractBundleImages(app.Composes())
6458
if err != nil {
@@ -81,7 +75,7 @@ func ToCNAB(app *types.App, invocationImageName string) (*bundle.Bundle, error)
8175
},
8276
},
8377
Maintainers: maintainers,
84-
Name: name,
78+
Name: app.Metadata().Name,
8579
Version: app.Metadata().Version,
8680
Parameters: parameters,
8781
Actions: map[string]bundle.Action{

internal/packager/cnab_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestToCNAB(t *testing.T) {
1515
assert.NilError(t, err)
1616
expected := &bundle.Bundle{
1717
Description: "hello",
18-
Name: "my-namespace/packing",
18+
Name: "packing",
1919
Maintainers: []bundle.Maintainer{
2020
{Name: "bearclaw", Email: "bearclaw@bearclaw.com"},
2121
{Name: "bob", Email: "bob@bob.com"},

0 commit comments

Comments
 (0)