Skip to content

Commit 8360e7e

Browse files
committed
refactor: unify images into calicovpp/vpp and flatten repo layout
- consolidate calicovpp/agent, calicovpp/vpp, calicovpp/multinet-monitor, and calicovpp/init-eks into a single unified calicovpp/vpp image. - restructure source directories under pkg/ for cleaner organization. - move executable entrypoints to top-level cmd/ to allow for building all golang agents from the top-level Makefile. - runtime behavior is unchanged - two separate daemons (agent and vpp) run in separate containers from the same image using command overrides. Changes: - unified image: calicovpp/vpp (contains all binaries) - single env var: CALICO_VPP_IMAGE (replaces CALICO_AGENT_IMAGE, CALICO_VPP_IMAGE, MULTINET_MONITOR_IMAGE) - unified dockerfiles: Dockerfile and Dockerfile.debug now contain all binaries - calico-vpp-agent, felix-api-proxy, gobgp, multinet-monitor, vpp-manager, and init-eks scripts in images/ubuntu/bin/ - top-level Makefile delegates image build through vpp-manager - vpp-manager Makefile builds all Go binaries into unified image - image/push targets removed from agent and multinet-monitor Makefile - manifests updated to calicovpp/vpp with explicit command overrides for agent and multinet-monitor containers - path references in test/ and docs/ updated for pkg/ move - image contexts moved to top-level images/ - helper scripts moved to top-level scripts/ - VPP clone/build directory relocated to top-level vpp_build Images that remain separate: calicovpp/vclsidecar, calicovpp/ctl Directory Restructure: ├── cmd │   ├── api-proxy │   ├── calico-vpp-agent │   ├── calicovppctl │   ├── multinet-monitor │   ├── replay-trace │   └── vpp-manager ├── common.mk ├── docs ├── images ├── Makefile ├── pkg │   ├── calico-vpp-agent │   ├── config │   ├── multinet-monitor │   ├── vpplink │   └── vpp-manager ├── scripts ├── test ├── vpp_build └── yaml Benefits: - Single image tag to manage across all dataplane components - Reduced bandwidth and storage requirements - No risk of image version drift between components - Simplified CI/CD pipeline - Easier version management and releases Signed-off-by: Aritra Basu <aritrbas+gh@cisco.com>
1 parent 6b3446a commit 8360e7e

316 files changed

Lines changed: 749 additions & 764 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# Binaries
2-
calico-vpp-agent/bin
3-
vpp-manager/images/*/vpp-manager
4-
vpp-manager/images/*/bin
5-
vpp-manager/images/*/artifacts
6-
vpp-manager/images/*/vppdev.sh
7-
vpp-manager/vpp_build/
2+
pkg/calico-vpp-agent/bin
3+
cmd/calicovppctl/bin
4+
images/*/vpp-manager
5+
images/*/bin
6+
images/*/artifacts
7+
images/*/vppdev.sh
8+
vpp_build/
89
*.deb
910
*.so*
10-
multinet-monitor/watcher
11+
pkg/multinet-monitor/watcher
1112
*.tgz
1213
*.tar
1314

@@ -28,10 +29,10 @@ test/vagrant/.vagrant
2829
*.bkp
2930

3031
# build artefacts
31-
calico-vpp-agent/version
32-
vpp-manager/images/ubuntu/version
32+
pkg/calico-vpp-agent/version
33+
images/ubuntu/version
3334
test/scripts/.buildlogs
34-
multinet-monitor/version
35+
pkg/multinet-monitor/version
3536
.coverage/
3637
bin/
3738
vendor/

Makefile

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,18 @@ check-%:
55

66
.PHONY: build
77
build:
8-
$(MAKE) -C calico-vpp-agent $@
9-
$(MAKE) -C vpp-manager $@
10-
$(MAKE) -C multinet-monitor $@
8+
$(MAKE) -C pkg/vpp-manager $@
119
$(MAKE) -C cmd/calicovppctl $@
1210

1311
.PHONY: image images
1412
images: image
1513
image:
16-
$(MAKE) -C calico-vpp-agent $@
17-
$(MAKE) -C vpp-manager $@
18-
$(MAKE) -C multinet-monitor $@
14+
$(MAKE) -C pkg/vpp-manager $@
1915
$(MAKE) -C cmd/calicovppctl $@
2016

2117
.PHONY: image-kind
2218
image-kind: image
23-
@for image in vpp:$(TAG) vpp:dbg-$(TAG) vclsidecar:$(TAG) vclsidecar:dbg-$(TAG) agent:$(TAG) multinet-monitor:$(TAG); do \
19+
@for image in vpp:$(TAG) vpp:dbg-$(TAG) vclsidecar:$(TAG) vclsidecar:dbg-$(TAG); do \
2420
docker image tag calicovpp/$$image localhost:5000/calicovpp/$$image ; \
2521
docker push localhost:5000/calicovpp/$$image ; \
2622
done
@@ -46,32 +42,26 @@ kind: kind-new-cluster image-kind kind-install-cni
4642

4743
.PHONY: push
4844
push:
49-
$(MAKE) -C calico-vpp-agent $@
50-
$(MAKE) -C vpp-manager $@
51-
$(MAKE) -C multinet-monitor $@
45+
$(MAKE) -C pkg/vpp-manager $@
5246
$(MAKE) -C cmd/calicovppctl $@
5347

5448
.PHONY: dev
5549
dev:
56-
$(MAKE) -C calico-vpp-agent ALSO_LATEST=y $@
57-
$(MAKE) -C vpp-manager ALSO_LATEST=y $@
58-
$(MAKE) -C multinet-monitor ALSO_LATEST=y $@
50+
$(MAKE) -C pkg/vpp-manager ALSO_LATEST=y $@
5951

6052
.PHONY: clean-vpp
6153
clean-vpp:
62-
$(MAKE) -C vpp-manager clean-vpp
54+
$(MAKE) -C pkg/vpp-manager clean-vpp
6355

6456
.PHONY: proto
6557
proto:
66-
$(MAKE) -C calico-vpp-agent $@
58+
$(MAKE) -C pkg/calico-vpp-agent $@
6759

6860
.PHONY: dev.k3s
6961
dev.k3s: dev
70-
@for x in agent vpp ; do \
71-
docker save -o /tmp/$$x.tar calicovpp/$$x:latest ; \
72-
sudo k3s ctr images import /tmp/$$x.tar ; \
73-
rm -f /tmp/$$x.tar ; \
74-
done
62+
docker save -o /tmp/vpp.tar calicovpp/vpp:latest
63+
sudo k3s ctr images import /tmp/vpp.tar
64+
rm -f /tmp/vpp.tar
7565

7666
.PHONY: dev-kind
7767
dev-kind: dev
@@ -111,9 +101,7 @@ start-test-cluster:
111101

112102
.PHONY: load-images
113103
load-images:
114-
$(MAKE) -C test/vagrant load-image -j99 IMG=calicovpp/agent:latest
115104
$(MAKE) -C test/vagrant load-image -j99 IMG=calicovpp/vpp:latest
116-
$(MAKE) -C test/vagrant load-image -j99 IMG=calicovpp/multinet-monitor:latest
117105

118106
CALICO_INSTALLATION ?= installation-default
119107
.PHONY: test-install-calico
@@ -216,9 +204,9 @@ restart-calicovpp:
216204
kubectl -n calico-vpp-dataplane rollout status ds/calico-vpp-node
217205

218206
.PHONY: goapi
219-
export VPP_DIR ?= $(shell pwd)/vpp-manager/vpp_build
207+
export VPP_DIR ?= $(shell pwd)/vpp_build
220208
goapi:
221-
@go generate -v ./vpplink/generated/
209+
@go generate -v ./pkg/vpplink/generated/
222210

223211
.PHONY: cherry-vpp
224212
cherry-vpp:
@@ -231,13 +219,13 @@ cherry-vpp:
231219
echo "branch : $(shell cd ${VPP_DIR} && git branch --show-current)"; \
232220
echo "Are you sure? [y/N] " && read ans && [ $${ans:-N} = y ]; \
233221
fi
234-
@BASE=$(BASE) bash ./vpplink/generated/vpp_clone_current.sh ${VPP_DIR}
222+
@BASE=$(BASE) bash ./pkg/vpplink/generated/vpp_clone_current.sh ${VPP_DIR}
235223
@make goapi
236224

237225
.PHONY: cherry-wipe
238226
cherry-wipe:
239-
rm -rf ./vpplink/binapi/.cherries-cache
240-
rm -rf ./vpplink/generated/.cherries-cache
227+
rm -rf ./pkg/vpplink/binapi/.cherries-cache
228+
rm -rf ./pkg/vpplink/generated/.cherries-cache
241229

242230
.PHONY: yaml
243231
yaml:
@@ -252,9 +240,9 @@ release: check-TAG check-CALICO_TAG
252240
git push origin $(basename $(TAG))
253241
# Generate yaml file for this release
254242
sed -i.bak "s|:latest|:$(TAG)|g" yaml/base/calico-vpp-daemonset.yaml
255-
sed -i.bak "s|:latest|:$(TAG)|g" yaml/components/multinet/multinet.yaml
243+
sed -i.bak "s|:latest|:$(TAG)|g" yaml/components/multinet/monitor-deployment.yaml
256244
rm yaml/base/calico-vpp-daemonset.yaml.bak
257-
rm yaml/components/multinet/multinet.yaml.bak
245+
rm yaml/components/multinet/monitor-deployment.yaml.bak
258246
$(MAKE) -C yaml
259247
git checkout -b release/$(TAG)
260248
git add yaml
@@ -316,14 +304,14 @@ delete-multinet:
316304

317305
.PHONY: lint
318306
lint:
319-
test -d ${VPP_DATAPLANE_DIR}/vpp-manager/vpp_build && touch ${VPP_DATAPLANE_DIR}/vpp-manager/vpp_build/go.mod || true
307+
test -d ${VPP_DATAPLANE_DIR}/vpp_build && touch ${VPP_DATAPLANE_DIR}/vpp_build/go.mod || true
320308
go mod tidy --diff || (echo -e "Please run\ngo mod tidy" && exit 1)
321309
gofmt -s -l . | grep -vE '(binapi|vpp_build|vendor)' \
322310
| diff -u /dev/null - \
323311
|| (echo -e "Please run\ngofmt -w ." && exit 1)
324312
golangci-lint run --color=never
325313
markdownlint --dot \
326-
--ignore vpp-manager/vpp_build \
314+
--ignore vpp_build \
327315
--ignore vendor .
328316

329317
.PHONY: cov-html
@@ -374,8 +362,8 @@ builder-image: ## Make dependencies image. (Not required normally; is implied in
374362
test: builder-image
375363
@rm -rf $(shell pwd)/.coverage/unit
376364
@mkdir -p $(shell pwd)/.coverage/unit
377-
$(MAKE) -C vpp-manager image
378-
$(MAKE) -C vpp-manager mock-pod-image
365+
$(MAKE) -C pkg/vpp-manager image
366+
$(MAKE) -C pkg/vpp-manager mock-pod-image
379367
# we prevent parallel test execution as test infra does not currently support parallel VPPs
380368
sudo -E env "PATH=$$PATH" VPP_BINARY=/usr/bin/vpp \
381369
VPP_IMAGE=calicovpp/vpp:$(TAG) \
@@ -393,8 +381,8 @@ test: builder-image
393381
ci-test: builder-image
394382
@rm -rf $(shell pwd)/.coverage/unit
395383
@mkdir -p $(shell pwd)/.coverage/unit
396-
$(MAKE) -C vpp-manager image
397-
$(MAKE) -C vpp-manager mock-pod-image
384+
$(MAKE) -C pkg/vpp-manager image
385+
$(MAKE) -C pkg/vpp-manager mock-pod-image
398386
# we prevent parallel test execution as test infra does not currently support parallel VPPs
399387
docker run -t --rm \
400388
--privileged \
@@ -428,4 +416,3 @@ ci-%: builder-image
428416
.PHONY: depend-image-hash
429417
depend-image-hash:
430418
@echo $(CI_BUILDER_IMAGE)
431-

calico-vpp-agent/Dockerfile

Lines changed: 0 additions & 13 deletions
This file was deleted.

calico-vpp-agent/Makefile

Lines changed: 0 additions & 49 deletions
This file was deleted.

calico-vpp-agent/cmd/api-proxy/felix-api-proxy.go renamed to cmd/api-proxy/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/sirupsen/logrus"
2626
"gopkg.in/tomb.v2"
2727

28-
"github.com/projectcalico/vpp-dataplane/v3/config"
28+
"github.com/projectcalico/vpp-dataplane/v3/pkg/config"
2929
)
3030

3131
const (

calico-vpp-agent/cmd/calico_vpp_dataplane.go renamed to cmd/calico-vpp-agent/main.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ import (
3434
"k8s.io/client-go/kubernetes"
3535
"k8s.io/client-go/rest"
3636

37-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/cni"
38-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/common"
39-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/connectivity"
40-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/felix"
41-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/health"
42-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/routing"
43-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/services"
44-
"github.com/projectcalico/vpp-dataplane/v3/calico-vpp-agent/watchers"
45-
"github.com/projectcalico/vpp-dataplane/v3/config"
37+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/cni"
38+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/common"
39+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/connectivity"
40+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/felix"
41+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/health"
42+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/routing"
43+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/services"
44+
"github.com/projectcalico/vpp-dataplane/v3/pkg/calico-vpp-agent/watchers"
45+
"github.com/projectcalico/vpp-dataplane/v3/pkg/config"
4646
)
4747

4848
/*

cmd/calicovppctl/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
include ../../common.mk
22

3-
BIN_DIR = $(VPP_DATAPLANE_DIR)/bin
3+
BIN_DIR = ./bin
44
SNAPSHOTTER_ENABLED := $(shell docker info -f '{{json .DriverStatus }}' | grep snapshotter)
55

66
.PHONY: bin

cmd/multinet-monitor/main.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (C) 2019 Cisco Systems Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12+
// implied.
13+
// See the License for the specific language governing permissions and
14+
// limitations under the License.
15+
16+
package main
17+
18+
import (
19+
multinetmonitor "github.com/projectcalico/vpp-dataplane/v3/pkg/multinet-monitor"
20+
)
21+
22+
func main() {
23+
multinetmonitor.Run()
24+
}
File renamed without changes.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ import (
3535
"go.fd.io/govpp/codec"
3636
"go.fd.io/govpp/core"
3737

38-
_ "github.com/projectcalico/vpp-dataplane/v3/vpplink"
39-
"github.com/projectcalico/vpp-dataplane/v3/vpplink/generated/bindings/af_packet"
40-
"github.com/projectcalico/vpp-dataplane/v3/vpplink/generated/bindings/tapv2"
38+
_ "github.com/projectcalico/vpp-dataplane/v3/pkg/vpplink"
39+
"github.com/projectcalico/vpp-dataplane/v3/pkg/vpplink/generated/bindings/af_packet"
40+
"github.com/projectcalico/vpp-dataplane/v3/pkg/vpplink/generated/bindings/tapv2"
4141
)
4242

4343
var (

0 commit comments

Comments
 (0)