Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update kpod inspect to use the new container state #106

Merged
merged 1 commit into from
Dec 13, 2017

Conversation

umohnani8
Copy link
Member

kpod inspect now uses the new libpod container state
and closely matches the output of docker inspect
some aspects of it are still WIP as the libpod container state
is still being worked on

Signed-off-by: umohnani8 umohnani@redhat.com

@umohnani8
Copy link
Member Author

@rhatdan @mheon @baude PTAL.
There is quite a bit of information that is not available yet, will add those later.
I have tried to match this as closely as possible to docker inspect.
If there are fields that we will definitely not be needing, let me know and I will take them out.
Also please double check that I am fetching the correct data for each field, and if I am overlooking any.
docker inspect does not omit empty fields, so I have done the same for kpod. What is our preference, omit or not?
Also I have no clue why ctrCreate in sql_internal_state.go is messed up with the spacing, will look into that later.

@@ -131,6 +132,8 @@ type ContainerConfig struct {
SharedNamespaceMap map[string]string `json:"sharedNamespaces"`
// Time container was created
CreatedTime time.Time `json:"createdTime"`
Volumes []string `json:"volumes"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you parse this from the OCI runtime spec's Mounts field?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed Volumes. fixed

// A container FS is split into two parts. The first is the top layer, a
// mutable layer, and the rest is the RootFS: the set of immutable layers
// that make up the image on which the container is based
func (c *Container) RootFsSize() (int64, error) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to use this outside of libpod? I think we should make this private, and let people get it via the inspect API

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

}

// RwSize Gets the size of the mutable top layer of the container
func (c *Container) RwSize() (int64, error) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above - if possible, make private and allow access via stats API.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or inspect API. Oops.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

pidsLimit := getPidsInfo(spec)

args := config.Spec.Process.Args
path := args[0]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't do any validation on the spec, so someone could feed us a bad spec with args having 0 length. Can you do a check for that here, to make sure we don't segfault trying to read an empty array?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

},
ImageID: config.RootfsImageID,
ImageName: config.RootfsImageName,
ResolvConfPath: runtimeInfo.ConfigPath, // not sure
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't get this yet, coming in networking patch - leave as "" for now

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for the "" that are pending, can you add a TODO comment or perhaps PENDING.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

"github.com/sirupsen/logrus"
)

func getContainerData(ctr *Container, size bool, driverData *driver.Data) (*ContainerData, error) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you make this func (ctr *Container) getContainerData(...) for consistency with the rest of our container functions?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Cmd: config.Spec.Process.Args,
},
NetworkSettings: &NetworkSettings{
SandboxID: config.Pod,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leave this blank for now, pods aren't really working yet.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

AppArmorProfile: spec.Process.ApparmorProfile,
ExecIDs: "", //can't get yet
HostConfig: &HostConfig{
Binds: config.Volumes,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really don't like storing this in Container. It doesn't directly affect any other part of the container, because the mounts are already in the spec. If possible, we should parse them out of the spec. Otherwise, we should either throw them in a label, or do something similar to the Artifacts functions we discussed on IRC.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking about it more, we can't tell what the default mounts are, so even if it's not completely compliant with the Docker CLI we should just output all mounts in the spec.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we already include the mounts (I see them below), I would probably just remove this and the container.config.Volumes field. From a libpod standpoint we don't know what is a user-created bind mount and what isn't - we just know about the mounts in the spec.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed volumes and binds. fixed

Architecture: ociv1Img.Architecture,
Os: ociv1Img.OS,
Config: &ociv1Img.Config,
DockerVersion: info.DockerVersion,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should rename this, exact compatability be damned. @rhatdan agree?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. We don't need to be outputing things that say Docker

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rename it to what? OCIVersion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally I'd just drop the 'Docker' part and leave it as Version:

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but it should still get its data from info.DockerVersion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rename that too.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Version works for me.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

MountLabel string `json:"MountLabel"`
ProcessLabel string `json:"ProcessLabel"`
AppArmorProfile string `json:"AppArmorProfile"`
ExecIDs string `json:"ExecIDs"` // don't know type yet, not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will be a []string

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Config map[string]string `json:"Config"` //idk type, not implemented
}

// RestarPolicy holds the container's policy on restart
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We aren't going to handle restart policy, so this can be removed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed


// HostConfig represents the host configuration for the container
type HostConfig struct {
Binds []string `json:"Binds"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strongly in favor of dropping this or leaving it empty always, makes no sense in a libpod context

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed

// HostConfig represents the host configuration for the container
type HostConfig struct {
Binds []string `json:"Binds"`
ContainerIDFile string `json:"ContainerIDFile"` //not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we do create this in kpod run - we can store it as an annotation and unmarshal it into here?

Binds []string `json:"Binds"`
ContainerIDFile string `json:"ContainerIDFile"` //not implemented
LogConfig *LogConfig `json:"LogConfig"` //not implemented
NetworkMode string `json:"NetworkMode"` //not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can probably be parsed out of the namespaces info in the OCI spec

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sort of fixed. Will need to move to cmd/kpod if decide to break the inspect struct

NetworkMode string `json:"NetworkMode"` //not implemented
PortBindings map[string]struct{} `json:"PortBindings"` //not implemented
RestartPolicy *RestartPolicy `json:"RestartPolicy"` //not implemented
AutoRemove bool `json:"AutoRemove"` //not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is handled in kpod run as --rm - again, we can probably add an annotation for it and check for it

AutoRemove bool `json:"AutoRemove"` //not implemented
VolumeDriver string `json:"VolumeDriver"` //not implemented
VolumesFrom string `json:"VolumesFrom"` // dont know type, not implemented
CapAdd string `json:"CapAdd"` //dont know type, not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented in kpod run as --cap-add and --cap-drop. Given the amount of stuff we need from kpod run, maybe we do need to store artifacts - maybe not the entire create config, but certainly a subset of it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, if libpod can't get these (CapAdd, CapDrop make no sense inside libpod), I would be in favor of removing them from the structs libpod returns (and maybe adding them back in in cmd/kpod?)

Dns []string `json:"Dns"` //not implemented
DnsOptions []string `json:"DnsOptions"` //not implemented
DnsSearch []string `json:"DnsSearch"` //not implemented
ExtraHosts string `json:"ExtraHosts"` //dont know type, not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably a []string

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

DnsOptions []string `json:"DnsOptions"` //not implemented
DnsSearch []string `json:"DnsSearch"` //not implemented
ExtraHosts string `json:"ExtraHosts"` //dont know type, not implemented
GroupAdd string `json:"GroupAdd"` //not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AdditionalGIDs in the spec

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

DnsSearch []string `json:"DnsSearch"` //not implemented
ExtraHosts string `json:"ExtraHosts"` //dont know type, not implemented
GroupAdd string `json:"GroupAdd"` //not implemented
IpcMode string `json:"IpcMode"` //not implemented
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can probably be parsed out of the spec's namespaces info

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Links string `json:"Links"` // dont know type, not implemented
OomScoreAdj *int `json:"OomScoreAdj"`
PidMode string `json:"PidMode"` //not implemented
Priveleged bool `json:"Priveleged"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo, Privileged

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@mheon
Copy link
Member

mheon commented Dec 5, 2017

I think we need to have separate ContainerInfo structs in libpod and cmd/kpod. There's a lot of stuff in the existing docker-based structs that makes no sense in libpod and will clutter the struct for people trying to use the API. The cmd/kpod structs can include the missing information, which we can store as labels or container artifacts

"WorkingDir": "/data"
}
```
# kpod inspect umohnani/get-started:part1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you may want to consider changing the 'umohani' to something generic like 'myusername' or some such.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or perhaps doing redis:alpine again, an image people would be able to easily play with on their system.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wanted to use an image that had a bunch of things configured like ports and all, but using fedora now. fixed

// RootFsSize gets the size of the container's root filesystem
// A container FS is split into two parts. The first is the top layer, a
// mutable layer, and the rest is the RootFS: the set of immutable layers
// that make up the image on which the container is based
Copy link
Member

@TomSweeneyRedHat TomSweeneyRedHat Dec 6, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit of a nit, missing period at end of line. Actually it looks like you did this through out. I'd suggest adding a period to all. That way people reading it a year from now won't wonder if you forgot to make a point or not.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed


ociv1Img, err := imgRef.OCIConfig()
if err != nil {
return nil, errors.Wrapf(err, "error gettin oci image info %q", img.ID)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gettin to getting

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@mheon
Copy link
Member

mheon commented Dec 6, 2017

@rhatdan I think we need to restructure this so we have different inspect structs coming out of libpod and 'kpod inspect' - libpod doesn't know about a lot of things that should be in the kpod inspect struct (what mounts were user specified volume mounts, what namespaces were specified as host or another container, etc). CRI-O and other libpod API users won't know or care about these because they don't have a kpod CLI. We should output only the things libpod knows about from libpod, and then we can save the kpod metadata separately and use that for kpod inspect

@umohnani8
Copy link
Member Author

Made changes based on reviews. Will make further changes based on @rhatdan response to having inspect be broken in two, 1 for kpod and the other for the libpod api.

@rhatdan
Copy link
Member

rhatdan commented Dec 6, 2017

@mheon I agree. I think kpod create/run should save this information on their own, and leave to libpod stuff that it knows about. Therefore cri-o inspect would return less information then kpod run/kpod inspect.
Some of the information that kpod inspect of a cri-o container, could probably reconstructed.

@mheon
Copy link
Member

mheon commented Dec 6, 2017

@rhatdan I talked with @umohnani8 and we agreed on an interface for storing metadata. We'll need such a thing for CRI-O anyways, so we'll build it now and use it to store information from kpod run (CLI arguments) so we can reconstruct the rest of what we need.

@umohnani8
Copy link
Member Author

rebased

if config.resources.memory != 0 && config.resources.memory < linuxMinMemory {
return warnings, fmt.Errorf("minimum memory limit allowed is 4MB")
if config.Resources.Memory != 0 && config.Resources.Memory < linuxMinMemory {
return warnings, fmt.Errorf("minimum Memory limit allowed is 4MB")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

config.resources.memory = 0
config.resources.memorySwap = -1
if config.Resources.Memory > 0 && !sysInfo.MemoryLimit {
warnings = addWarning(warnings, "Your kernel does not support Memory limit capabilities or the cgroup is not mounted. Limitation discarded.")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

if config.resources.memory > 0 && config.resources.memorySwap > 0 && config.resources.memorySwap < config.resources.memory {
return warnings, fmt.Errorf("minimum memoryswap limit should be larger than memory limit, see usage")
if config.Resources.Memory > 0 && config.Resources.MemorySwap > 0 && config.Resources.MemorySwap < config.Resources.Memory {
return warnings, fmt.Errorf("minimum Memoryswap limit should be larger than Memory limit, see usage")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

if swappiness < -1 || swappiness > 100 {
return warnings, fmt.Errorf("invalid value: %v, valid memory swappiness range is 0-100", swappiness)
return warnings, fmt.Errorf("invalid value: %v, valid Memory swappiness range is 0-100", swappiness)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

warnings = addWarning(warnings, "Your kernel does not support memory soft limit capabilities or the cgroup is not mounted. Limitation discarded.")
config.resources.memoryReservation = 0
if config.Resources.MemoryReservation > 0 && !sysInfo.MemoryReservation {
warnings = addWarning(warnings, "Your kernel does not support Memory soft limit capabilities or the cgroup is not mounted. Limitation discarded.")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

if config.resources.memoryReservation > 0 && config.resources.memoryReservation < linuxMinMemory {
return warnings, fmt.Errorf("minimum memory reservation allowed is 4MB")
if config.Resources.MemoryReservation > 0 && config.Resources.MemoryReservation < linuxMinMemory {
return warnings, fmt.Errorf("minimum Memory reservation allowed is 4MB")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Memory should not be capitalized.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean up all error messages to not capitalize Memory.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

if err != nil {
return errors.Wrapf(err, "error parsing container data")
return errors.Wrapf(err, "error parsing conainer data %q", ctr.ID())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

container is misspelled

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

data, err = getCtrInspectInfo(ctr, libpodInspectData)
if err != nil {
return errors.Wrapf(err, "error parsing container data %q", ctr.ID)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this work when checking buildah containers? Images? CRI-O Containers? Images?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't work with buildah containers, but buildah images and CRI-O containers/images should all be possible

NetworkMode string `json:"NetworkMode"`
PortBindings map[string]struct{} `json:"PortBindings"` //TODO
AutoRemove bool `json:"AutoRemove"`
VolumeDriver string `json:"VolumeDriver"` //TODO
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No support, remove this

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

PortBindings map[string]struct{} `json:"PortBindings"` //TODO
AutoRemove bool `json:"AutoRemove"`
VolumeDriver string `json:"VolumeDriver"` //TODO
VolumesFrom []string `json:"VolumesFrom"`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No support, I believe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a flag option though for create and run.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok lets remove it

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

GroupAdd []uint32 `json:"GroupAdd"`
IpcMode string `json:"IpcMode"`
Cgroup string `json:"Cgroup"`
Links string `json:"Links"` // dont know type, TODO
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No support remove.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@umohnani8 umohnani8 force-pushed the kpod_inspect branch 3 times, most recently from 7177525 to 3a530f0 Compare December 11, 2017 20:39
@umohnani8
Copy link
Member Author

@rhatdan is this good to merge just so we have a working inspect?

@rhatdan
Copy link
Member

rhatdan commented Dec 12, 2017

@umohnani8 we need to continue working on this and move some of this config into libpod so we can handle data from the containers image. But for now this LGTM.

@mheon @TomSweeneyRedHat @baude PTAL

@umohnani8
Copy link
Member Author

@rhatdan yup will get back to it once we figure out how to get all the data together.

@rh-atomic-bot
Copy link
Collaborator

☔ The latest upstream changes (presumably 88121e0) made this pull request unmergeable. Please resolve the merge conflicts.

kpod inspect now uses the new libpod container state
and closely matches the output of docker inspect
some aspects of it are still WIP as the libpod container state
is still being worked on

Signed-off-by: umohnani8 <umohnani@redhat.com>
@mheon
Copy link
Member

mheon commented Dec 12, 2017

LGTM

In the future we'll need to work out a better way to inspect CRI-O containers that don't have inspect artifacts, though we are also discussing API changes that will put all the relevant data in libpod so every container will have it.

@mheon
Copy link
Member

mheon commented Dec 12, 2017

That can wait until later, though, as we don't have a major libpod consumer except kpod now
@rh-atomic-bot r+

@rh-atomic-bot
Copy link
Collaborator

📌 Commit 74ee579 has been approved by mheon

@rh-atomic-bot
Copy link
Collaborator

⌛ Testing commit 74ee579 with merge 899bcb1...

rh-atomic-bot pushed a commit that referenced this pull request Dec 12, 2017
kpod inspect now uses the new libpod container state
and closely matches the output of docker inspect
some aspects of it are still WIP as the libpod container state
is still being worked on

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #106
Approved by: mheon
@rh-atomic-bot
Copy link
Collaborator

💔 Test failed - status-papr

@mheon
Copy link
Member

mheon commented Dec 12, 2017

Looks like a flake
@rh-atomic-bot retry

rh-atomic-bot pushed a commit that referenced this pull request Dec 12, 2017
kpod inspect now uses the new libpod container state
and closely matches the output of docker inspect
some aspects of it are still WIP as the libpod container state
is still being worked on

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #106
Approved by: mheon
@rh-atomic-bot
Copy link
Collaborator

⌛ Testing commit 74ee579 with merge aab0c0c...

@rh-atomic-bot
Copy link
Collaborator

💔 Test failed - status-papr

@mheon
Copy link
Member

mheon commented Dec 12, 2017

Seeing a lot of what look like SELinux related flakes in papr

@umohnani8
Copy link
Member Author

@rhatdan @mheon is this okay to merge, even though homu is failing?

@mheon
Copy link
Member

mheon commented Dec 13, 2017

I think it should be fine as tests are green. LGTM. Merging.

@mheon mheon merged commit e456c07 into containers:master Dec 13, 2017
@github-actions github-actions bot added the locked - please file new issue/PR Assist humans wanting to comment on an old issue or PR with locked comments. label Sep 28, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 28, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
locked - please file new issue/PR Assist humans wanting to comment on an old issue or PR with locked comments.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants