mirror of
https://github.com/chaifeng/ufw-docker.git
synced 2025-07-07 11:06:12 +02:00
Extract a function ufw-docker--list-service-ports
This commit is contained in:
parent
9659e5d27d
commit
7886c73f5b
2 changed files with 19 additions and 13 deletions
|
@ -157,8 +157,7 @@ test-ufw-docker--service-allow-a-service-without-ports-published() {
|
||||||
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
||||||
@mock ufw-docker--get-service-id private-web === @stdout abcd1234
|
@mock ufw-docker--get-service-id private-web === @stdout abcd1234
|
||||||
@mock ufw-docker--get-service-name private-web === @stdout private-web
|
@mock ufw-docker--get-service-name private-web === @stdout private-web
|
||||||
@mock docker service inspect private-web \
|
@mock ufw-docker--list-service-ports private-web === @stdout ""
|
||||||
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}' === @stdout ""
|
|
||||||
|
|
||||||
load-ufw-docker-function ufw-docker--service-allow
|
load-ufw-docker-function ufw-docker--service-allow
|
||||||
ufw-docker--service-allow private-web 80/tcp
|
ufw-docker--service-allow private-web 80/tcp
|
||||||
|
@ -173,9 +172,7 @@ test-ufw-docker--service-allow-a-service-while-agent-not-running() {
|
||||||
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
||||||
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
||||||
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
||||||
@mock docker service inspect webapp \
|
@mock ufw-docker--list-service-ports webapp === @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
||||||
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}' \
|
|
||||||
=== @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
|
||||||
@mockfalse docker service inspect ufw-docker-agent
|
@mockfalse docker service inspect ufw-docker-agent
|
||||||
|
|
||||||
load-ufw-docker-function ufw-docker--service-allow
|
load-ufw-docker-function ufw-docker--service-allow
|
||||||
|
@ -196,9 +193,7 @@ test-ufw-docker--service-allow-a-service-add-new-env() {
|
||||||
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
||||||
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
||||||
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
||||||
@mock docker service inspect webapp \
|
@mock ufw-docker--list-service-ports webapp === @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
||||||
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}' \
|
|
||||||
=== @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
|
||||||
@mocktrue docker service inspect ufw-docker-agent
|
@mocktrue docker service inspect ufw-docker-agent
|
||||||
@mock ufw-docker--get-env-list === @stdout "abcd1234 webapp/80/tcp"
|
@mock ufw-docker--get-env-list === @stdout "abcd1234 webapp/80/tcp"
|
||||||
|
|
||||||
|
@ -219,9 +214,7 @@ test-ufw-docker--service-allow-a-service-update-a-env() {
|
||||||
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
@mocktrue grep -E '^[0-9]+(/(tcp|udp))?$'
|
||||||
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
@mock ufw-docker--get-service-id webapp === @stdout abcd1234
|
||||||
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
@mock ufw-docker--get-service-name webapp === @stdout webapp
|
||||||
@mock docker service inspect webapp \
|
@mock ufw-docker--list-service-ports webapp === @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
||||||
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}' \
|
|
||||||
=== @stdout "53 53/udp" "80 80/tcp" "8080 8080/tcp"
|
|
||||||
@mocktrue docker service inspect ufw-docker-agent
|
@mocktrue docker service inspect ufw-docker-agent
|
||||||
@mock ufw-docker--get-env-list === @stdout "a_different_id webapp/80/tcp"
|
@mock ufw-docker--get-env-list === @stdout "a_different_id webapp/80/tcp"
|
||||||
|
|
||||||
|
@ -288,3 +281,11 @@ test-ufw-docker--service-delete-matches-assert() {
|
||||||
--image "${ufw_docker_agent_image}" \
|
--image "${ufw_docker_agent_image}" \
|
||||||
"${ufw_docker_agent}"
|
"${ufw_docker_agent}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test-ufw-docker--list-service-ports() {
|
||||||
|
load-ufw-docker-function ufw-docker--list-service-ports
|
||||||
|
ufw-docker--list-service-ports foo
|
||||||
|
}
|
||||||
|
test-ufw-docker--list-service-ports-assert() {
|
||||||
|
docker service inspect foo --format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}'
|
||||||
|
}
|
||||||
|
|
|
@ -196,6 +196,12 @@ function ufw-docker--get-service-name() {
|
||||||
docker service inspect "${service_name}" --format "{{.Spec.Name}}"
|
docker service inspect "${service_name}" --format "{{.Spec.Name}}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ufw-docker--list-service-ports() {
|
||||||
|
declare service_name="$1"
|
||||||
|
docker service inspect "$service_name" \
|
||||||
|
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}'
|
||||||
|
}
|
||||||
|
|
||||||
function ufw-docker--service-allow() {
|
function ufw-docker--service-allow() {
|
||||||
declare service_name="$1"
|
declare service_name="$1"
|
||||||
declare service_port="$2"
|
declare service_port="$2"
|
||||||
|
@ -218,8 +224,7 @@ function ufw-docker--service-allow() {
|
||||||
|
|
||||||
service_name="$(ufw-docker--get-service-name "${service_name}")"
|
service_name="$(ufw-docker--get-service-name "${service_name}")"
|
||||||
|
|
||||||
exec 9< <(docker service inspect "$service_name" \
|
exec 9< <(ufw-docker--list-service-ports "$service_name")
|
||||||
--format '{{range .Endpoint.Spec.Ports}}{{.PublishedPort}} {{.TargetPort}}/{{.Protocol}}{{"\n"}}{{end}}')
|
|
||||||
while read -u 9 -r port target_port; do
|
while read -u 9 -r port target_port; do
|
||||||
if [[ "$target_port" = "${service_port}/${service_proto}" ]]; then
|
if [[ "$target_port" = "${service_port}/${service_proto}" ]]; then
|
||||||
declare service_env="ufw_public_${service_id}=${service_name}/${port}/${service_proto}"
|
declare service_env="ufw_public_${service_id}=${service_name}/${port}/${service_proto}"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue