| 39 | } |
| 40 | |
| 41 | void DockerRuntime::inspectContainer() |
| 42 | { |
| 43 | auto* process = new QProcess(this); |
| 44 | connect(process, QOverload<int,QProcess::ExitStatus>::of(&QProcess::finished), |
| 45 | this, [process, this](int code, QProcess::ExitStatus status){ |
| 46 | process->deleteLater(); |
| 47 | qCDebug(DOCKER) << "inspect container" << code << status; |
| 48 | if (code || status) { |
| 49 | qCWarning(DOCKER) << "Could not figure out the container" << m_container; |
| 50 | return; |
| 51 | } |
| 52 | const QJsonArray arr = QJsonDocument::fromJson(process->readAll()).array(); |
| 53 | const QJsonObject obj = arr.constBegin()->toObject(); |
| 54 | |
| 55 | const QJsonObject objGraphDriverData = obj.value(QLatin1String("GraphDriver")).toObject().value(QLatin1String("Data")).toObject(); |
| 56 | m_mergedDir = Path(objGraphDriverData.value(QLatin1String("MergedDir")).toString()); |
| 57 | qCDebug(DOCKER) << "mergeddir:" << m_container << m_mergedDir; |
| 58 | |
| 59 | const auto& entries = obj[QLatin1String("Config")].toObject()[QLatin1String("Env")].toArray(); |
| 60 | for (const auto& entry : entries) { |
| 61 | const auto content = entry.toString().split(QLatin1Char('=')); |
| 62 | if (content.count() != 2) |
| 63 | continue; |
| 64 | m_envs.insert(content[0].toLocal8Bit(), content[1].toLocal8Bit()); |
| 65 | } |
| 66 | qCDebug(DOCKER) << "envs:" << m_container << m_envs; |
| 67 | }); |
| 68 | process->start(QStringLiteral("docker"), {QStringLiteral("container"), QStringLiteral("inspect"), m_container}); |
| 69 | process->waitForFinished(); |
| 70 | qDebug() << "inspecting" << QStringList{QStringLiteral("container"), QStringLiteral("inspect"), m_container} << process->exitCode(); |
| 71 | } |
| 72 | |
| 73 | DockerRuntime::~DockerRuntime() |
| 74 | { |