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

Commit 4e71bce

Browse files
author
Ulysses Souza
authored
Merge pull request #585 from jcsirot/remove-duffle-dep
Remove Duffle dependency
2 parents 8d52f6d + 8b9556c commit 4e71bce

File tree

21 files changed

+101
-742
lines changed

21 files changed

+101
-742
lines changed

Gopkg.lock

Lines changed: 5 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@ required = ["github.com/wadey/gocovmerge"]
3939
name = "github.com/docker/cli"
4040
branch = "19.03"
4141

42-
[[override]]
43-
name = "github.com/deislabs/duffle"
44-
revision = "5930527762a46c7adfcfccaec1e6a2ddf5841319"
45-
4642
[[override]]
4743
name = "github.com/deislabs/cnab-go"
4844
branch = "master"

examples/cnab-helm/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* [Docker Desktop](https://www.docker.com/products/docker-desktop) with Kubernetes enabled or any other Kubernetes cluster
66
* Source code from this directory
77
* [Helm](https://helm.sh) configured for your Kubernetes cluster
8-
* A `duffle` [credential set](https://github.com/deislabs/duffle/blob/1847f2f7127f13f62c1377f936cba522e8947dfb/docs/proposal/201-credentialset.md) created
8+
* A [credential set](https://github.com/deislabs/cnab-spec/blob/master/802-credential-sets.md) created
99

1010
### Examples
1111

internal/commands/cnab.go

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import (
1515
"github.com/deislabs/cnab-go/claim"
1616
"github.com/deislabs/cnab-go/credentials"
1717
"github.com/deislabs/cnab-go/driver"
18-
duffleDriver "github.com/deislabs/duffle/pkg/driver"
19-
"github.com/deislabs/duffle/pkg/loader"
18+
dockerDriver "github.com/deislabs/cnab-go/driver/docker"
2019
"github.com/docker/app/internal"
2120
"github.com/docker/app/internal/packager"
2221
appstore "github.com/docker/app/internal/store"
@@ -179,44 +178,37 @@ func getTargetContext(optstargetContext, currentContext string) string {
179178
}
180179

181180
// prepareDriver prepares a driver per the user's request.
182-
func prepareDriver(dockerCli command.Cli, bindMount bindMount, stdout io.Writer) (driver.Driver, *bytes.Buffer, error) {
183-
driverImpl, err := duffleDriver.Lookup("docker")
184-
if err != nil {
185-
return driverImpl, nil, err
186-
}
181+
func prepareDriver(dockerCli command.Cli, bindMount bindMount, stdout io.Writer) (driver.Driver, *bytes.Buffer) {
182+
d := &dockerDriver.Driver{}
187183
errBuf := bytes.NewBuffer(nil)
188-
if d, ok := driverImpl.(*duffleDriver.DockerDriver); ok {
189-
d.SetDockerCli(dockerCli)
190-
if stdout != nil {
191-
d.SetContainerOut(stdout)
192-
}
193-
d.SetContainerErr(errBuf)
194-
if bindMount.required {
195-
d.AddConfigurationOptions(func(config *container.Config, hostConfig *container.HostConfig) error {
196-
config.User = "0:0"
197-
mounts := []mount.Mount{
198-
{
199-
Type: mount.TypeBind,
200-
Source: bindMount.endpoint,
201-
Target: bindMount.endpoint,
202-
},
203-
}
204-
hostConfig.Mounts = mounts
205-
return nil
206-
})
207-
}
184+
d.SetDockerCli(dockerCli)
185+
if stdout != nil {
186+
d.SetContainerOut(stdout)
187+
}
188+
d.SetContainerErr(errBuf)
189+
if bindMount.required {
190+
d.AddConfigurationOptions(func(config *container.Config, hostConfig *container.HostConfig) error {
191+
config.User = "0:0"
192+
mounts := []mount.Mount{
193+
{
194+
Type: mount.TypeBind,
195+
Source: bindMount.endpoint,
196+
Target: bindMount.endpoint,
197+
},
198+
}
199+
hostConfig.Mounts = mounts
200+
return nil
201+
})
208202
}
209203

210204
// Load any driver-specific config out of the environment.
211-
if configurable, ok := driverImpl.(driver.Configurable); ok {
212-
driverCfg := map[string]string{}
213-
for env := range configurable.Config() {
214-
driverCfg[env] = os.Getenv(env)
215-
}
216-
configurable.SetConfig(driverCfg)
205+
driverCfg := map[string]string{}
206+
for env := range d.Config() {
207+
driverCfg[env] = os.Getenv(env)
217208
}
209+
d.SetConfig(driverCfg)
218210

219-
return driverImpl, errBuf, err
211+
return d, errBuf
220212
}
221213

222214
func getAppNameKind(name string) (string, nameKind) {
@@ -251,6 +243,15 @@ func extractAndLoadAppBasedBundle(dockerCli command.Cli, name string) (*bundle.B
251243
return bndl, "", err
252244
}
253245

246+
func loadBundleFromFile(filename string) (*bundle.Bundle, error) {
247+
b := &bundle.Bundle{}
248+
data, err := ioutil.ReadFile(filename)
249+
if err != nil {
250+
return b, err
251+
}
252+
return bundle.Unmarshal(data)
253+
}
254+
254255
//resolveBundle looks for a CNAB bundle which can be in a Docker App Package format or
255256
// a bundle stored locally or in the bundle store. It returns a built or found bundle,
256257
// a reference to the bundle if it is found in the bundlestore, and an error.
@@ -269,7 +270,7 @@ func resolveBundle(dockerCli command.Cli, bundleStore appstore.BundleStore, name
269270
if strings.HasSuffix(name, internal.AppExtension) {
270271
return extractAndLoadAppBasedBundle(dockerCli, name)
271272
}
272-
bndl, err := loader.NewLoader().Load(name)
273+
bndl, err := loadBundleFromFile(name)
273274
return bndl, "", err
274275
case nameKindDir, nameKindEmpty:
275276
if pullRef {
@@ -354,10 +355,7 @@ func prepareCustomAction(actionName string, dockerCli command.Cli, appname strin
354355
if err != nil {
355356
return nil, nil, nil, err
356357
}
357-
driverImpl, errBuf, err := prepareDriver(dockerCli, bindMount{}, stdout)
358-
if err != nil {
359-
return nil, nil, nil, err
360-
}
358+
driverImpl, errBuf := prepareDriver(dockerCli, bindMount{}, stdout)
361359
bundle, ref, err := resolveBundle(dockerCli, bundleStore, appname, pullOpts.pull, registryOpts.insecureRegistries)
362360
if err != nil {
363361
return nil, nil, nil, err

internal/commands/install.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,7 @@ func runInstall(dockerCli command.Cli, appname string, opts installOptions) erro
106106
return err
107107
}
108108

109-
driverImpl, errBuf, err := prepareDriver(dockerCli, bind, nil)
110-
if err != nil {
111-
return err
112-
}
109+
driverImpl, errBuf := prepareDriver(dockerCli, bind, nil)
113110
installation.Bundle = bndl
114111

115112
if err := mergeBundleParameters(installation,

internal/commands/parameters.go

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ func mergeBundleParameters(installation *store.Installation, ops ...mergeBundleO
100100
return err
101101
}
102102
}
103-
if err := matchAndMergeParametersDefinition(installation.Parameters, cfg.params, cfg.bundle, cfg.strictMode, cfg.stderr); err != nil {
103+
mergedValues, err := matchAndMergeParametersDefinition(installation.Parameters, cfg)
104+
if err != nil {
104105
return err
105106
}
106-
var err error
107-
installation.Parameters, err = bundle.ValuesOrDefaults(installation.Parameters, bndl)
107+
installation.Parameters, err = bundle.ValuesOrDefaults(mergedValues, installation.Parameters, bndl)
108108
return err
109109
}
110110

@@ -116,23 +116,27 @@ func getParameterFromBundle(name string, bndl *bundle.Bundle) (bundle.ParameterD
116116
return param, found
117117
}
118118

119-
func matchAndMergeParametersDefinition(currentValues map[string]interface{}, parameterValues map[string]string, bundle *bundle.Bundle, strictMode bool, stderr io.Writer) error {
120-
for k, v := range parameterValues {
121-
param, ok := getParameterFromBundle(k, bundle)
119+
func matchAndMergeParametersDefinition(currentValues map[string]interface{}, cfg *mergeBundleConfig) (map[string]interface{}, error) {
120+
mergedValues := make(map[string]interface{})
121+
for k, v := range currentValues {
122+
mergedValues[k] = v
123+
}
124+
for k, v := range cfg.params {
125+
param, ok := getParameterFromBundle(k, cfg.bundle)
122126
if !ok {
123-
if strictMode {
124-
return fmt.Errorf("parameter %q is not defined in the bundle", k)
127+
if cfg.strictMode {
128+
return nil, fmt.Errorf("parameter %q is not defined in the bundle", k)
125129
}
126-
fmt.Fprintf(stderr, "Warning: parameter %q is not defined in the bundle\n", k)
130+
fmt.Fprintf(cfg.stderr, "Warning: parameter %q is not defined in the bundle\n", k)
127131
continue
128132
}
129-
definition, ok := bundle.Definitions[param.Definition]
133+
definition, ok := cfg.bundle.Definitions[param.Definition]
130134
if !ok {
131-
return fmt.Errorf("invalid bundle: definition not found for parameter %q", k)
135+
return nil, fmt.Errorf("invalid bundle: definition not found for parameter %q", k)
132136
}
133137
value, err := definition.ConvertValue(v)
134138
if err != nil {
135-
return errors.Wrapf(err, "invalid value for parameter %q", k)
139+
return nil, errors.Wrapf(err, "invalid value for parameter %q", k)
136140
}
137141
valErrors, err := definition.Validate(value)
138142
if valErrors != nil {
@@ -141,12 +145,12 @@ func matchAndMergeParametersDefinition(currentValues map[string]interface{}, par
141145
errs[i] = v.Error
142146
}
143147
errMsg := strings.Join(errs, ", ")
144-
return errors.Wrapf(fmt.Errorf(errMsg), "invalid value for parameter %q", k)
148+
return nil, errors.Wrapf(fmt.Errorf(errMsg), "invalid value for parameter %q", k)
145149
}
146150
if err != nil {
147-
return errors.Wrapf(err, "invalid value for parameter %q", k)
151+
return nil, errors.Wrapf(err, "invalid value for parameter %q", k)
148152
}
149-
currentValues[k] = value
153+
mergedValues[k] = value
150154
}
151-
return nil
155+
return mergedValues, nil
152156
}

internal/commands/status.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,7 @@ func runStatus(dockerCli command.Cli, installationName string, opts credentialOp
6969
if err != nil {
7070
return err
7171
}
72-
driverImpl, errBuf, err := prepareDriver(dockerCli, bind, nil)
73-
if err != nil {
74-
return err
75-
}
72+
driverImpl, errBuf := prepareDriver(dockerCli, bind, nil)
7673
if err := mergeBundleParameters(installation,
7774
withSendRegistryAuth(opts.sendRegistryAuth),
7875
); err != nil {

internal/commands/uninstall.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,7 @@ func runUninstall(dockerCli command.Cli, installationName string, opts uninstall
6363
if err != nil {
6464
return err
6565
}
66-
driverImpl, errBuf, err := prepareDriver(dockerCli, bind, nil)
67-
if err != nil {
68-
return err
69-
}
66+
driverImpl, errBuf := prepareDriver(dockerCli, bind, nil)
7067
creds, err := prepareCredentialSet(installation.Bundle, opts.CredentialSetOpts(dockerCli, credentialStore)...)
7168
if err != nil {
7269
return err

internal/commands/upgrade.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,7 @@ func runUpgrade(dockerCli command.Cli, installationName string, opts upgradeOpti
7676
if err != nil {
7777
return err
7878
}
79-
driverImpl, errBuf, err := prepareDriver(dockerCli, bind, nil)
80-
if err != nil {
81-
return err
82-
}
79+
driverImpl, errBuf := prepareDriver(dockerCli, bind, nil)
8380
creds, err := prepareCredentialSet(installation.Bundle, opts.CredentialSetOpts(dockerCli, credentialStore)...)
8481
if err != nil {
8582
return err

vendor/github.com/deislabs/cnab-go/bundle/bundle.go

Lines changed: 13 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)