mirror of https://github.com/portainer/portainer
fix(docker): check len of device capabilities [BE-11898] (#750)
parent
1bc91d0c7c
commit
45471ce86d
|
@ -54,7 +54,7 @@ angular.module('portainer.docker').controller('ContainerController', [
|
||||||
|
|
||||||
$scope.computeDockerGPUCommand = () => {
|
$scope.computeDockerGPUCommand = () => {
|
||||||
const gpuOptions = _.find($scope.container.HostConfig.DeviceRequests, function (o) {
|
const gpuOptions = _.find($scope.container.HostConfig.DeviceRequests, function (o) {
|
||||||
return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';
|
return o.Driver === 'nvidia' || (o.Capabilities && o.Capabilities.length > 0 && o.Capabilities[0] > 0 && o.Capabilities[0][0] === 'gpu');
|
||||||
});
|
});
|
||||||
if (!gpuOptions) {
|
if (!gpuOptions) {
|
||||||
return 'No GPU config found';
|
return 'No GPU config found';
|
||||||
|
|
|
@ -14,8 +14,7 @@ import (
|
||||||
networkingutils "github.com/portainer/portainer/pkg/networking"
|
networkingutils "github.com/portainer/portainer/pkg/networking"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/container"
|
dockercontainer "github.com/docker/docker/api/types/container"
|
||||||
_container "github.com/docker/docker/api/types/container"
|
|
||||||
"github.com/docker/docker/api/types/image"
|
"github.com/docker/docker/api/types/image"
|
||||||
"github.com/docker/docker/api/types/volume"
|
"github.com/docker/docker/api/types/volume"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
|
@ -128,7 +127,7 @@ func dockerSnapshotSwarmServices(snapshot *portainer.DockerSnapshot, cli *client
|
||||||
}
|
}
|
||||||
|
|
||||||
func dockerSnapshotContainers(snapshot *portainer.DockerSnapshot, cli *client.Client) error {
|
func dockerSnapshotContainers(snapshot *portainer.DockerSnapshot, cli *client.Client) error {
|
||||||
containers, err := cli.ContainerList(context.Background(), container.ListOptions{All: true})
|
containers, err := cli.ContainerList(context.Background(), dockercontainer.ListOptions{All: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -170,11 +169,16 @@ func dockerSnapshotContainers(snapshot *portainer.DockerSnapshot, cli *client.Cl
|
||||||
|
|
||||||
containerEnvs[container.ID] = response.Config.Env
|
containerEnvs[container.ID] = response.Config.Env
|
||||||
|
|
||||||
var gpuOptions *_container.DeviceRequest
|
var gpuOptions *dockercontainer.DeviceRequest
|
||||||
|
|
||||||
for _, deviceRequest := range response.HostConfig.Resources.DeviceRequests {
|
if response.HostConfig != nil {
|
||||||
if deviceRequest.Driver == "nvidia" || deviceRequest.Capabilities[0][0] == "gpu" {
|
for _, deviceRequest := range response.HostConfig.DeviceRequests {
|
||||||
gpuOptions = &deviceRequest
|
if deviceRequest.Driver == "nvidia" ||
|
||||||
|
(len(deviceRequest.Capabilities) > 0 &&
|
||||||
|
len(deviceRequest.Capabilities[0]) > 0 &&
|
||||||
|
deviceRequest.Capabilities[0][0] == "gpu") {
|
||||||
|
gpuOptions = &deviceRequest
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,7 +302,7 @@ func dockerSnapshotContainerErrorLogs(snapshot *portainer.DockerSnapshot, cli *c
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
rd, err := cli.ContainerLogs(context.Background(), containerId, container.LogsOptions{
|
rd, err := cli.ContainerLogs(context.Background(), containerId, dockercontainer.LogsOptions{
|
||||||
ShowStdout: false,
|
ShowStdout: false,
|
||||||
ShowStderr: true,
|
ShowStderr: true,
|
||||||
Tail: "5",
|
Tail: "5",
|
||||||
|
|
Loading…
Reference in New Issue