rm: disallow removing context builders

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
pull/1128/head
CrazyMax 3 years ago
parent 4a215a943b
commit 1e71a3ffa7
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7

@ -43,31 +43,37 @@ func runRm(dockerCli command.Cli, in rmOptions) error {
return rmAllInactive(ctx, txn, dockerCli, in)
}
var ng *store.NodeGroup
if in.builder != "" {
ng, err := storeutil.GetNodeGroup(txn, dockerCli, in.builder)
ng, err = storeutil.GetNodeGroup(txn, dockerCli, in.builder)
if err != nil {
return err
}
err1 := rm(ctx, dockerCli, in, ng)
if err := txn.Remove(ng.Name); err != nil {
} else {
ng, err = storeutil.GetCurrentInstance(txn, dockerCli)
if err != nil {
return err
}
return err1
}
if ng == nil {
return nil
}
ng, err := storeutil.GetCurrentInstance(txn, dockerCli)
ctxbuilders, err := dockerCli.ContextStore().List()
if err != nil {
return err
}
if ng != nil {
err1 := rm(ctx, dockerCli, in, ng)
if err := txn.Remove(ng.Name); err != nil {
return err
for _, cb := range ctxbuilders {
if ng.Driver == "docker" && len(ng.Nodes) == 1 && ng.Nodes[0].Endpoint == cb.Name {
return errors.Errorf("context builder cannot be removed, run `docker context rm %s` to remove this context", cb.Name)
}
return err1
}
return nil
err1 := rm(ctx, dockerCli, in, ng)
if err := txn.Remove(ng.Name); err != nil {
return err
}
return err1
}
func rmCmd(dockerCli command.Cli, rootOpts *rootOptions) *cobra.Command {

Loading…
Cancel
Save