Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ in the [API.md](https://github.com/containers/libpod/blob/master/API.md) file in

[func DeleteUnusedImages() []string](#DeleteUnusedImages)

[func Diff(name: string) DiffInfo](#Diff)

[func ExportContainer(name: string, path: string) string](#ExportContainer)

[func ExportImage(name: string, destination: string, compress: bool, tags: []string) string](#ExportImage)
Expand Down Expand Up @@ -173,6 +175,8 @@ in the [API.md](https://github.com/containers/libpod/blob/master/API.md) file in

[type CreateResourceConfig](#CreateResourceConfig)

[type DiffInfo](#DiffInfo)

[type Event](#Event)

[type IDMap](#IDMap)
Expand Down Expand Up @@ -388,6 +392,11 @@ $ varlink call -m unix:/run/podman/io.podman/io.podman.DeleteUnusedImages
]
}
~~~
### <a name="Diff"></a>func Diff
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">

method Diff(name: [string](https://godoc.org/builtin#string)) [DiffInfo](#DiffInfo)</div>

### <a name="ExportContainer"></a>func ExportContainer
<div style="background-color: #E8E8E8; padding: 15px; margin: 10px; border-radius: 10px;">

Expand Down Expand Up @@ -1431,6 +1440,13 @@ pids_limit [int](https://godoc.org/builtin#int)
shm_size [int](https://godoc.org/builtin#int)

ulimit [[]string](#[]string)
### <a name="DiffInfo"></a>type DiffInfo



path [string](https://godoc.org/builtin#string)

changeType [string](https://godoc.org/builtin#string)
### <a name="Event"></a>type Event

Event describes a libpod struct
Expand Down
2 changes: 0 additions & 2 deletions cmd/podman/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ func getMainCommands() []*cobra.Command {
_attachCommand,
_commitCommand,
_createCommand,
_diffCommand,
_execCommand,
_generateCommand,
_playCommand,
Expand Down Expand Up @@ -58,7 +57,6 @@ func getContainerSubCommands() []*cobra.Command {
_cleanupCommand,
_commitCommand,
_createCommand,
_diffCommand,
_execCommand,
_exportCommand,
_killCommand,
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ var (
containerCommands = []*cobra.Command{
_containerExistsCommand,
_contInspectSubCommand,
_diffCommand,
_listSubCommand,
_logsCommand,
}
Expand Down
7 changes: 3 additions & 4 deletions cmd/podman/diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"github.com/containers/buildah/pkg/formats"
"github.com/containers/libpod/cmd/podman/cliconfig"
"github.com/containers/libpod/cmd/podman/libpodruntime"
"github.com/containers/libpod/pkg/adapter"
"github.com/containers/storage/pkg/archive"
"github.com/pkg/errors"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -86,18 +86,17 @@ func diffCmd(c *cliconfig.DiffValues) error {
return errors.Errorf("container, image, or layer name must be specified: podman diff [options [...]] ID-NAME")
}

runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand)
runtime, err := adapter.GetRuntime(&c.PodmanCommand)
if err != nil {
return errors.Wrapf(err, "could not get runtime")
}
defer runtime.Shutdown(false)

to := c.InputArgs[0]
changes, err := runtime.GetDiff("", to)
changes, err := runtime.Diff(c, to)
if err != nil {
return errors.Wrapf(err, "could not get changes for %q", to)
}

diffOutput := []diffOutputParams{}
outputFormat := c.Format

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ var (
// implemented.
var mainCommands = []*cobra.Command{
_buildCommand,
_diffCommand,
_eventsCommand,
_exportCommand,
_historyCommand,
Expand Down
9 changes: 9 additions & 0 deletions cmd/podman/varlink/io.podman.varlink
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,13 @@ type Event(
type: string
)

type DiffInfo(
# path that is different
path: string,
# Add, Delete, Modify
changeType: string
)

# GetVersion returns version and build information of the podman service
method GetVersion() -> (
version: string,
Expand Down Expand Up @@ -1154,6 +1161,8 @@ method LoadImage(name: string, inputFile: string, quiet: bool, deleteFile: bool)
# GetEvents returns known libpod events filtered by the options provided.
method GetEvents(filter: []string, since: string, until: string) -> (events: Event)

method Diff(name: string) -> (diffs: []DiffInfo)

# ImageNotFound means the image could not be found by the provided name or ID in local storage.
error ImageNotFound (id: string, reason: string)

Expand Down
6 changes: 6 additions & 0 deletions pkg/adapter/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/containers/libpod/libpod/events"
"github.com/containers/libpod/libpod/image"
"github.com/containers/libpod/pkg/rootless"
"github.com/containers/storage/pkg/archive"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -430,3 +431,8 @@ func (r *LocalRuntime) Events(c *cliconfig.EventValues) error {
}
return nil
}

// Diff shows the difference in two objects
func (r *LocalRuntime) Diff(c *cliconfig.DiffValues, to string) ([]archive.Change, error) {
return r.Runtime.GetDiff("", to)
}
27 changes: 27 additions & 0 deletions pkg/adapter/runtime_remote.go
Original file line number Diff line number Diff line change
Expand Up @@ -831,3 +831,30 @@ func (r *LocalRuntime) Events(c *cliconfig.EventValues) error {
}
return nil
}

// Diff ...
func (r *LocalRuntime) Diff(c *cliconfig.DiffValues, to string) ([]archive.Change, error) {
var changes []archive.Change
reply, err := iopodman.Diff().Call(r.Conn, to)
if err != nil {
return nil, err
}
for _, change := range reply {
changes = append(changes, archive.Change{Path: change.Path, Kind: stringToChangeType(change.ChangeType)})
}
return changes, nil
}

func stringToChangeType(change string) archive.ChangeType {
switch change {
case "A":
return archive.ChangeAdd
case "D":
return archive.ChangeDelete
default:
logrus.Errorf("'%s' is unknown archive type", change)
fallthrough
case "C":
return archive.ChangeModify
}
}
13 changes: 13 additions & 0 deletions pkg/varlinkapi/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -910,3 +910,16 @@ func (i *LibpodAPI) LoadImage(call iopodman.VarlinkCall, name, inputFile string,
}
return call.ReplyLoadImage(br)
}

// Diff ...
func (i *LibpodAPI) Diff(call iopodman.VarlinkCall, name string) error {
var response []iopodman.DiffInfo
changes, err := i.Runtime.GetDiff("", name)
if err != nil {
return call.ReplyErrorOccurred(err.Error())
}
for _, change := range changes {
response = append(response, iopodman.DiffInfo{Path: change.Path, ChangeType: change.Kind.String()})
}
return call.ReplyDiff(response)
}