Files
DevOpsLab/app/templates/pages/profile/docker-settings.html
Сергей Антропов d4b0d6f848 Исправление синтаксической ошибки в molecule_executor.py и обновление k8s preset'ов
- Исправлена незакрытая скобка в _build_test_command (строка 745)
- Добавлена поддержка k8s preset'ов: выполнение create_k8s_cluster.py перед create.yml
- Обновлены образы в k8s preset'ах: заменен недоступный ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy на inecs/ansible-lab:ubuntu22-latest
- Обновлены preset'ы в базе данных через SQL
- Обновлены файлы: k8s-single.yml, k8s-multi.yml, k8s-istio-full.yml
2026-02-16 00:31:09 +03:00

201 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "base.html" %}
{% block title %}Настройки Docker - DevOpsLab{% endblock %}
{% block page_title %}Настройки Docker (Harbor и Docker Hub){% endblock %}
{% block header_actions %}
<a href="/profile" class="btn btn-secondary btn-sm">
<i class="fas fa-arrow-left me-2"></i>
Назад к профилю
</a>
{% endblock %}
{% block content %}
<div class="row">
<!-- Docker Hub настройки -->
<div class="col-12 col-lg-6 mb-3">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fab fa-docker me-2"></i>
Docker Hub
</h5>
</div>
<div class="card-body">
<form
hx-post="/api/v1/profile/docker-settings"
hx-swap="none"
>
<div class="mb-3">
<label class="form-label">Имя пользователя</label>
<input
type="text"
name="dockerhub_username"
value="{{ profile.dockerhub_username if profile and profile.dockerhub_username else '' }}"
class="form-control"
placeholder="username"
>
</div>
<div class="mb-3">
<label class="form-label">Пароль / Access Token</label>
<input
type="password"
name="dockerhub_password"
value=""
class="form-control"
placeholder="Оставьте пустым, чтобы не изменять"
>
<div class="form-text">
Используйте Access Token вместо пароля для большей безопасности
</div>
</div>
<div class="mb-3">
<label class="form-label">Репозиторий по умолчанию</label>
<input
type="text"
name="dockerhub_repository"
value="{{ profile.dockerhub_repository if profile and profile.dockerhub_repository else '' }}"
class="form-control"
placeholder="ansible-lab"
>
<div class="form-text">
Имя репозитория (без namespace)
</div>
</div>
<button type="submit" class="btn btn-primary w-100">
<i class="fas fa-save me-2"></i>
Сохранить настройки Docker Hub
</button>
</form>
</div>
</div>
</div>
<!-- Harbor настройки -->
<div class="col-12 col-lg-6 mb-3">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-server me-2"></i>
Harbor
</h5>
</div>
<div class="card-body">
<form
hx-post="/api/v1/profile/docker-settings"
hx-swap="none"
>
<div class="mb-3">
<label class="form-label">URL Harbor</label>
<input
type="url"
name="harbor_url"
value="{{ profile.harbor_url if profile and profile.harbor_url else '' }}"
class="form-control"
placeholder="https://harbor.example.com"
>
</div>
<div class="mb-3">
<label class="form-label">Имя пользователя</label>
<input
type="text"
name="harbor_username"
value="{{ profile.harbor_username if profile and profile.harbor_username else '' }}"
class="form-control"
placeholder="admin"
>
</div>
<div class="mb-3">
<label class="form-label">Пароль</label>
<input
type="password"
name="harbor_password"
value=""
class="form-control"
placeholder="Оставьте пустым, чтобы не изменять"
>
</div>
<div class="mb-3">
<label class="form-label">Проект</label>
<input
type="text"
name="harbor_project"
value="{{ profile.harbor_project if profile and profile.harbor_project else '' }}"
class="form-control"
placeholder="library"
>
<div class="form-text">
Имя проекта в Harbor
</div>
</div>
<button type="submit" class="btn btn-primary w-100">
<i class="fas fa-save me-2"></i>
Сохранить настройки Harbor
</button>
</form>
</div>
</div>
</div>
</div>
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
// Обработка успешного сохранения настроек Docker
document.body.addEventListener('htmx:afterRequest', function(event) {
if (event.detail.path === '/api/v1/profile/docker-settings' && event.detail.xhr.status === 200) {
try {
const response = JSON.parse(event.detail.xhr.responseText);
if (response.success) {
// Показываем модальное окно с успешным сообщением
if (window.showMessageModal) {
window.showMessageModal(
response.message || 'Настройки успешно сохранены',
'success',
'Успешно',
function() {
// После закрытия модального окна обновляем страницу
location.reload();
}
);
} else {
// Если функция недоступна, просто обновляем страницу
location.reload();
}
}
} catch (e) {
console.error('Ошибка парсинга ответа:', e);
if (window.showMessageModal) {
window.showMessageModal('Ошибка при сохранении настроек', 'error');
}
}
} else if (event.detail.path === '/api/v1/profile/docker-settings' && event.detail.xhr.status !== 200) {
// Ошибка - показываем в модальном окне
try {
const response = JSON.parse(event.detail.xhr.responseText);
const errorMessage = response.detail || response.message || 'Ошибка при сохранении настроек';
if (window.showMessageModal) {
window.showMessageModal(errorMessage, 'error');
} else {
alert(errorMessage);
}
} catch (e) {
if (window.showMessageModal) {
window.showMessageModal('Ошибка при сохранении настроек', 'error');
} else {
alert('Ошибка при сохранении настроек');
}
}
}
});
});
</script>
{% endblock %}