-
Notifications
You must be signed in to change notification settings - Fork 968
Expand file tree
/
Copy pathMakefile
More file actions
75 lines (62 loc) · 2.57 KB
/
Makefile
File metadata and controls
75 lines (62 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Container
CONTAINER ?= sonic-mgmt
ANSIBLE_DIR := /data/sonic-mgmt/ansible
TESTS_DIR := /data/sonic-mgmt/tests
# Testbed config
TOPO ?= vms-kvm-t0
TESTBED ?= vtestbed.yaml
INVENTORY ?= veos_vtb
PASSFILE ?= password.txt
DUT ?= vlab-01
# Neighbor VM type (veos|ceos|vsonic) - simulated neighboring devices
NEIGHBOR ?= ceos
# Test config
T ?=
EXTRA ?=
# TTY handling: use -t only if terminal is available (for CI compatibility)
TTY := $(shell test -t 0 && echo "-t")
# Base exec
EXEC_ANSIBLE := docker exec $(TTY) -w $(ANSIBLE_DIR) $(CONTAINER)
EXEC_TESTS := docker exec $(TTY) -w $(TESTS_DIR) $(CONTAINER)
.PHONY: help check-container shell add-topo remove-topo deploy-mg test
help:
@echo "Usage: make <target> [VARIABLE=value ...]"
@echo ""
@echo "Targets:"
@echo " shell - Enter sonic-mgmt container"
@echo " add-topo - Deploy topology"
@echo " remove-topo - Remove topology"
@echo " deploy-mg - Deploy minigraph to DUT"
@echo " test - Run tests (requires T=<test_path>)"
@echo ""
@echo "Variables:"
@echo " TOPO - Topology name (default: vms-kvm-t0)"
@echo " TESTBED - Testbed file (default: vtestbed.yaml)"
@echo " INVENTORY - Inventory file (default: veos_vtb)"
@echo " DUT - DUT name (default: vlab-01)"
@echo " NEIGHBOR - Neighbor VM type: ceos|veos|vsonic (default: ceos)"
@echo " T - Test path for 'test' target"
@echo " EXTRA - Extra arguments for test"
@echo ""
@echo "Examples:"
@echo " make add-topo"
@echo " make add-topo TOPO=vms-kvm-t1"
@echo " make test T=bgp/test_bgp_fact.py"
@echo " make test T=bgp/test_bgp_fact.py EXTRA='-e \"--neighbor_type=sonic\"'"
check-container:
@docker ps --format '{{.Names}}' | grep -q '^$(CONTAINER)$$' || \
(echo "Error: Container '$(CONTAINER)' is not running." && \
echo "Run: ./setup-container.sh -n $(CONTAINER) -d /data" && exit 1)
shell: check-container
docker exec -it $(CONTAINER) bash
add-topo: check-container
$(EXEC_ANSIBLE) ./testbed-cli.sh -t $(TESTBED) -m $(INVENTORY) -k $(NEIGHBOR) add-topo $(TOPO) $(PASSFILE)
remove-topo: check-container
$(EXEC_ANSIBLE) ./testbed-cli.sh -t $(TESTBED) -m $(INVENTORY) -k $(NEIGHBOR) remove-topo $(TOPO) $(PASSFILE)
deploy-mg: check-container
$(EXEC_ANSIBLE) ./testbed-cli.sh -t $(TESTBED) -m $(INVENTORY) deploy-mg $(TOPO) $(INVENTORY) $(PASSFILE)
test: check-container
ifndef T
$(error T is required. Usage: make test T=bgp/test_bgp_fact.py)
endif
$(EXEC_TESTS) ./run_tests.sh -n $(TOPO) -d $(DUT) -f $(TESTBED) -i ../ansible/$(INVENTORY) -c $(T) $(EXTRA)