Skip to content

Commit ec94278

Browse files
committed
merge main
2 parents e0225ce + bc48941 commit ec94278

28 files changed

+579
-209
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,13 @@ integration-test: $(SELECTED_PACKAGE) build-mock-management-plane-grpc
161161
TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) BUILD_TARGET="install-agent-local" CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} \
162162
PACKAGES_REPO=$(OSS_PACKAGES_REPO) PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(DOCKERFILE_PATH) IMAGE_PATH=$(IMAGE_PATH) TAG=${IMAGE_TAG} \
163163
OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) \
164-
go test -v ./test/integration/installuninstall ./test/integration/managementplane ./test/integration/nginxless
164+
go test -v ./test/integration/installuninstall ./test/integration/managementplane ./test/integration/auxiliarycommandserver ./test/integration/nginxless
165165

166166
official-image-integration-test: $(SELECTED_PACKAGE) build-mock-management-plane-grpc
167167
TEST_ENV="Container" CONTAINER_OS_TYPE=$(CONTAINER_OS_TYPE) CONTAINER_NGINX_IMAGE_REGISTRY=${CONTAINER_NGINX_IMAGE_REGISTRY} BUILD_TARGET="install" \
168168
PACKAGES_REPO=$(OSS_PACKAGES_REPO) TAG=${TAG} PACKAGE_NAME=$(PACKAGE_NAME) BASE_IMAGE=$(BASE_IMAGE) DOCKERFILE_PATH=$(OFFICIAL_IMAGE_DOCKERFILE_PATH) \
169169
OS_VERSION=$(OS_VERSION) OS_RELEASE=$(OS_RELEASE) IMAGE_PATH=$(IMAGE_PATH) \
170-
go test -v ./test/integration/managementplane
170+
go test -v ./test/integration/managementplane ./test/integration/auxiliarycommandserver
171171

172172
performance-test:
173173
@mkdir -p $(TEST_BUILD_DIR)

Makefile.packaging

Lines changed: 11 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,18 @@ AZURE_PACKAGES_DIR := ./build/azure/packages
99
BINARY_PATH := $(BUILD_DIR)/$(BINARY_NAME)
1010
GPG_PUBLIC_KEY := .key
1111
PACKAGE_BUILD ?= 1
12-
PACKAGE_VERSION := $(shell echo ${VERSION} | tr -d 'v')
12+
PACKAGE_VERSION := $(shell git describe --match "v[0-9]*" --abbrev=0 --tags)
1313
TARBALL_NAME := $(PACKAGE_PREFIX).tar.gz
1414

15-
DEB_DISTROS ?= ubuntu-noble-24.04 ubuntu-jammy-22.04 ubuntu-focal-20.04 debian-bookworm-12 debian-bullseye-11
15+
DEB_DISTROS ?= ubuntu-plucky-25.04 ubuntu-noble-24.04 ubuntu-jammy-22.04 ubuntu-focal-20.04 debian-bookworm-12 debian-bullseye-11
1616
DEB_ARCHS ?= arm64 amd64
17-
RPM_DISTROS ?= oraclelinux-8-x86_64 oraclelinux-9-x86_64 suse-15-x86_64
17+
RPM_DISTROS ?= suse-15-x86_64
1818
RPM_ARCH := x86_64
19-
REDHAT_VERSIONS ?= redhatenterprise-8 redhatenterprise-9
19+
REDHAT_VERSIONS ?= redhatenterprise-8 redhatenterprise-9 redhatenterprise-10
2020
REDHAT_ARCHS ?= aarch64 x86_64
21-
ROCKY_VERSIONS ?= rocky-8 rocky-9
22-
ROCKY_ARCHS ?= aarch64 x86_64
23-
FREEBSD_DISTROS ?= "FreeBSD:13:amd64" "FreeBSD:14:amd64"
2421
APK_VERSIONS ?= 3.18 3.19 3.20 3.21 3.22
2522
APK_ARCHS ?= aarch64 x86_64
2623
APK_REVISION ?= 1
27-
ALMA_VERSIONS ?= almalinux-8 almalinux-9
28-
ALMA_ARCHS ?= aarch64 x86_64
2924
AMAZON_VERSIONS ?= amazon-2 amazon-2023
3025
AMAZON_ARCHS ?= aarch64 x86_64
3126

@@ -35,55 +30,38 @@ AMAZON_ARCHS ?= aarch64 x86_64
3530
.PHONY: clean-packages
3631
clean-packages:
3732
rm -rf $(PACKAGES_DIR)
38-
rm -rf $(GITHUB_PACKAGES_DIR)
39-
rm -rf $(AZURE_PACKAGES_DIR)
4033

4134
$(PACKAGES_DIR):
42-
@mkdir -p $(PACKAGES_DIR)/deb && mkdir -p $(PACKAGES_DIR)/rpm && mkdir -p $(PACKAGES_DIR)/apk && mkdir -p $(PACKAGES_DIR)/txz
43-
44-
$(GITHUB_PACKAGES_DIR):
45-
@mkdir -p $(GITHUB_PACKAGES_DIR)
46-
47-
$(AZURE_PACKAGES_DIR):
48-
@mkdir -p $(AZURE_PACKAGES_DIR)
35+
@mkdir -p $(PACKAGES_DIR)/deb && mkdir -p $(PACKAGES_DIR)/rpm && mkdir -p $(PACKAGES_DIR)/apk
4936

5037
.PHONY: package
51-
package: gpg-key $(PACKAGES_DIR) $(GITHUB_PACKAGES_DIR) $(AZURE_PACKAGES_DIR) #### Create final packages for all supported distros
38+
package: $(PACKAGES_DIR) #### Create final packages for all supported distros
5239
# Create deb packages
53-
5440
@for arch in $(DEB_ARCHS); do \
5541
GOWORK=off CGO_ENABLED=0 GOARCH=$${arch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
5642
for distro in $(DEB_DISTROS); do \
5743
deb_codename=`echo $$distro | cut -d- -f 2`; \
5844
VERSION=$(PACKAGE_VERSION)~$${deb_codename} ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager deb --target ${PACKAGES_DIR}/deb/${PACKAGE_PREFIX}_$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb; \
59-
cp ${PACKAGES_DIR}/deb/${PACKAGE_PREFIX}_$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb; \
60-
cp ${PACKAGES_DIR}/deb/${PACKAGE_PREFIX}_$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION)~$${deb_codename}_$${arch}.deb; \
6145
done; \
6246
rm -rf $(BINARY_PATH); \
6347
done; \
6448

6549
# Create rpm packages
66-
6750
@GOWORK=off CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE)
6851
@for distro in $(RPM_DISTROS); do \
6952
rpm_distro=`echo $$distro | cut -d- -f 1`; \
7053
rpm_major=`echo $$distro | cut -d- -f 2`; \
7154
rpm_codename='na'; \
72-
if [ "$$rpm_distro" = "centos" ] || [ "$$rpm_distro" = "redhatenterprise" ]; then rpm_codename="el$$rpm_major"; \
73-
elif [ "$$rpm_distro" = "oraclelinux" ]; then rpm_codename="oraclelinux$$rpm_major"; \
74-
elif [ "$$rpm_distro" = "suse" ]; then rpm_codename="sles$$rpm_major"; \
55+
if [ "$$rpm_distro" = "suse" ]; then rpm_codename="sles$$rpm_major"; \
7556
fi; \
7657
if [ "$$rpm_codename" != "na" ]; then \
7758
VERSION=$(PACKAGE_VERSION) ARCH=amd64 nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.${RPM_ARCH}.rpm; \
78-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$(RPM_ARCH).rpm ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.${RPM_ARCH}.rpm; \
79-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$(RPM_ARCH).rpm ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.${RPM_ARCH}.rpm; \
8059
fi; \
8160
done; \
8261
rm -rf $(BINARY_PATH)
8362

8463

8564
# Create redhat rpm packages
86-
8765
@for arch in $(REDHAT_ARCHS); do \
8866
goarch=amd64; \
8967
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
@@ -93,49 +71,12 @@ package: gpg-key $(PACKAGES_DIR) $(GITHUB_PACKAGES_DIR) $(AZURE_PACKAGES_DIR) ##
9371
rpm_major=`echo $$distro | cut -d- -f 2`; \
9472
rpm_codename="el$$rpm_major"; \
9573
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
96-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
97-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
9874
done; \
9975
rm -rf $(BINARY_PATH); \
10076
done; \
10177

102-
# Create almalinux rpm packages
103-
104-
@for arch in $(ALMA_ARCHS); do \
105-
goarch=amd64; \
106-
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
107-
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
108-
for distro in $(ALMA_VERSIONS); do \
109-
rpm_distro=`echo $$distro | cut -d- -f 1`; \
110-
rpm_major=`echo $$distro | cut -d- -f 2`; \
111-
rpm_codename="almalinux$$rpm_major"; \
112-
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
113-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
114-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
115-
done; \
116-
rm -rf $(BINARY_PATH); \
117-
done; \
118-
119-
# Create rocky rpm packages
120-
121-
@for arch in $(ROCKY_ARCHS); do \
122-
goarch=amd64; \
123-
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
124-
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
125-
for distro in $(ROCKY_VERSIONS); do \
126-
rpm_distro=`echo $$distro | cut -d- -f 1`; \
127-
rpm_major=`echo $$distro | cut -d- -f 2`; \
128-
rpm_codename='na'; \
129-
if [ "$$rpm_distro" = "rocky" ]; then rpm_codename="rocky$$rpm_major"; fi; \
130-
if [ "$$rpm_codename" != "na" ]; then \
131-
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
132-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
133-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
134-
fi; \
135-
done; \
136-
rm -rf $(BINARY_PATH); \
137-
done; \
13878

79+
# Create amazon rpm packages
13980
@for arch in $(AMAZON_ARCHS); do \
14081
goarch=amd64; \
14182
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
@@ -144,34 +85,22 @@ package: gpg-key $(PACKAGES_DIR) $(GITHUB_PACKAGES_DIR) $(AZURE_PACKAGES_DIR) ##
14485
rpm_major=`echo $$version | cut -d- -f 2`; \
14586
rpm_codename="amzn$$rpm_major";\
14687
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager rpm --target $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
147-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
148-
cp $(PACKAGES_DIR)/rpm/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).$${rpm_codename}.ngx.$${arch}.rpm; \
14988
done; \
15089
rm -rf $(BINARY_PATH); \
15190
done; \
15291

15392
# Create apk packages
154-
15593
@for arch in $(APK_ARCHS); do \
15694
goarch=amd64; \
15795
if [ "$$arch" = "aarch64" ]; then goarch="arm64"; fi; \
15896
GOWORK=off CGO_ENABLED=0 GOARCH=$${goarch} GOOS=linux go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE); \
15997
for version in $(APK_VERSIONS); do \
16098
if [ ! -d "$(PACKAGES_DIR)/apk/v$${version}/$${arch}" ]; then mkdir -p $(PACKAGES_DIR)/apk/v$${version}/$${arch}; fi; \
16199
VERSION=$(PACKAGE_VERSION) ARCH=$${arch} nfpm pkg --config .nfpm.yaml --packager apk --target $(PACKAGES_DIR)/apk/v$${version}/$${arch}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).apk; \
162-
cp $(PACKAGES_DIR)/apk/v$${version}/$${arch}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).apk ${GITHUB_PACKAGES_DIR}/${PACKAGE_PREFIX}-v$(PACKAGE_VERSION)-r$(APK_REVISION).apk; \
163-
cp $(PACKAGES_DIR)/apk/v$${version}/$${arch}/${PACKAGE_PREFIX}-$(PACKAGE_VERSION).apk ${AZURE_PACKAGES_DIR}/${PACKAGE_PREFIX}-v$(PACKAGE_VERSION)-r$(APK_REVISION).apk; \
164100
done; \
165101
rm -rf $(BINARY_PATH); \
166102
done; \
167-
168-
# Create txz packages
169-
170-
rm -rf $(BINARY_PATH)
171-
@GOWORK=off CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -pgo=auto -ldflags=${LDFLAGS} -o $(BINARY_PATH) $(PROJECT_DIR)/$(PROJECT_FILE)
172-
173-
docker run -v ${PWD}:/nginx-agent/ -e VERSION=$(PACKAGE_VERSION) build-signed-packager:1.0.0
174-
103+
175104
# Package build complete
176105

177106
echo "DEB packages:"; \
@@ -180,17 +109,9 @@ package: gpg-key $(PACKAGES_DIR) $(GITHUB_PACKAGES_DIR) $(AZURE_PACKAGES_DIR) ##
180109
find $(PACKAGES_DIR)/rpm ;\
181110
echo "APK packages:"; \
182111
find $(PACKAGES_DIR)/apk ;\
183-
echo "TXZ packages:"; \
184-
find $(PACKAGES_DIR)/txz ;\
185-
echo "Github packages:"; \
186-
find $(GITHUB_PACKAGES_DIR) ;\
187-
cd $(PACKAGES_DIR) && tar -czvf "./$(TARBALL_NAME)" * && cd ../.. && cp "${PACKAGES_DIR}/$(TARBALL_NAME)" "${AZURE_PACKAGES_DIR}/$(TARBALL_NAME)"; \
188-
echo "Azure packages:"; \
189-
find $(AZURE_PACKAGES_DIR) ;
190112

191-
.PHONY: build-signed-packager
192-
build-signed-packager:
193-
docker build -f scripts/packages/packager/Dockerfile --build-arg package_type=signed-package -t build-signed-packager:1.0.0 .
113+
# Create tarball containing all packages
114+
cd $(PACKAGES_DIR) && tar -czvf "./$(TARBALL_NAME)" * && cd ../.. && cp "${PACKAGES_DIR}/$(TARBALL_NAME)"; \
194115

195116
.PHONY: gpg-key
196117
gpg-key: ## Generate GPG public key

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ require (
122122
github.com/go-playground/locales v0.14.1 // indirect
123123
github.com/go-playground/universal-translator v0.18.1 // indirect
124124
github.com/go-playground/validator/v10 v10.23.0 // indirect
125-
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
125+
github.com/go-viper/mapstructure/v2 v2.3.0 // indirect
126126
github.com/gobwas/glob v0.2.3 // indirect
127127
github.com/goccy/go-json v0.10.5 // indirect
128128
github.com/gogo/googleapis v1.4.1 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@ github.com/go-playground/validator/v10 v10.23.0/go.mod h1:dbuPbCMFw/DrkbEynArYaC
198198
github.com/go-resty/resty/v2 v2.16.2 h1:CpRqTjIzq/rweXUt9+GxzzQdlkqMdt8Lm/fuK/CAbAg=
199199
github.com/go-resty/resty/v2 v2.16.2/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU=
200200
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
201-
github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
202-
github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
201+
github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk=
202+
github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
203203
github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I=
204204
github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
205205
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=

internal/datasource/config/nginx_config_parser_test.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,31 @@ var (
260260
api write=on;
261261
}
262262
}
263+
`
264+
265+
testConf22 = ` server {
266+
listen unix:/var/lib/nginx/nginx-plus-api.sock;
267+
access_log off;
268+
269+
# $config_version_mismatch is defined in /etc/nginx/config-version.conf
270+
location /configVersionCheck {
271+
if ($config_version_mismatch) {
272+
return 503;
273+
}
274+
return 200;
275+
}
276+
277+
location /api {
278+
api write=on;
279+
}
280+
}
281+
282+
server {
283+
listen unix:/var/lib/nginx/nginx-418-server.sock;
284+
access_log off;
285+
286+
return 418;
287+
}
263288
`
264289
)
265290

@@ -965,9 +990,20 @@ func TestNginxConfigParser_urlsForLocationDirective(t *testing.T) {
965990
Location: "/api",
966991
},
967992
},
968-
name: "Test 21: listen unix:/var/run/nginx/nginx-plus-api.sock- Plus Unix Socket",
993+
name: "Test 21: listen unix:/var/run/nginx/nginx-plus-api.sock - Plus Unix Socket",
969994
conf: testConf21,
970995
},
996+
{
997+
plus: []*model.APIDetails{
998+
{
999+
URL: "http://nginx-plus-api/api",
1000+
Listen: "unix:/var/lib/nginx/nginx-plus-api.sock",
1001+
Location: "/api",
1002+
},
1003+
},
1004+
name: "Test 22: Multiple Plus Unix Sockets",
1005+
conf: testConf22,
1006+
},
9711007
} {
9721008
ctx := context.Background()
9731009
f, err := os.CreateTemp(tmpDir, "conf")

internal/file/file_manager_service.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ type (
8888
)
8989

9090
type FileManagerService struct {
91+
manifestLock *sync.RWMutex
9192
agentConfig *config.Config
9293
fileOperator fileOperator
9394
fileServiceOperator fileServiceOperatorInterface
@@ -102,16 +103,19 @@ type FileManagerService struct {
102103
filesMutex sync.RWMutex
103104
}
104105

105-
func NewFileManagerService(fileServiceClient mpi.FileServiceClient, agentConfig *config.Config) *FileManagerService {
106+
func NewFileManagerService(fileServiceClient mpi.FileServiceClient, agentConfig *config.Config,
107+
manifestLock *sync.RWMutex,
108+
) *FileManagerService {
106109
return &FileManagerService{
107110
agentConfig: agentConfig,
108-
fileOperator: NewFileOperator(),
109-
fileServiceOperator: NewFileServiceOperator(agentConfig, fileServiceClient),
111+
fileOperator: NewFileOperator(manifestLock),
112+
fileServiceOperator: NewFileServiceOperator(agentConfig, fileServiceClient, manifestLock),
110113
fileActions: make(map[string]*model.FileCache),
111114
rollbackFileContents: make(map[string][]byte),
112115
currentFilesOnDisk: make(map[string]*mpi.File),
113116
previousManifestFiles: make(map[string]*model.ManifestFile),
114117
manifestFilePath: agentConfig.ManifestDir + "/manifest.json",
118+
manifestLock: manifestLock,
115119
}
116120
}
117121

@@ -379,9 +383,13 @@ func (fms *FileManagerService) UpdateCurrentFilesOnDisk(
379383
// seems to be a control flag, avoid control coupling
380384
// nolint: revive
381385
func (fms *FileManagerService) UpdateManifestFile(currentFiles map[string]*mpi.File, referenced bool) (err error) {
386+
slog.Debug("Updating manifest file", "current_files", currentFiles, "referenced", referenced)
382387
currentManifestFiles, _, readError := fms.manifestFile()
383388
fms.previousManifestFiles = currentManifestFiles
384389
if readError != nil && !errors.Is(readError, os.ErrNotExist) {
390+
slog.Debug("Error reading manifest file", "current_manifest_files",
391+
currentManifestFiles, "updated_files", currentFiles, "referenced", referenced)
392+
385393
return fmt.Errorf("unable to read manifest file: %w", readError)
386394
}
387395

@@ -413,6 +421,8 @@ func (fms *FileManagerService) manifestFile() (map[string]*model.ManifestFile, m
413421
return nil, nil, err
414422
}
415423

424+
fms.manifestLock.Lock()
425+
defer fms.manifestLock.Unlock()
416426
file, err := os.ReadFile(fms.manifestFilePath)
417427
if err != nil {
418428
return nil, nil, fmt.Errorf("failed to read manifest file: %w", err)
@@ -422,6 +432,10 @@ func (fms *FileManagerService) manifestFile() (map[string]*model.ManifestFile, m
422432

423433
err = json.Unmarshal(file, &manifestFiles)
424434
if err != nil {
435+
if len(file) == 0 {
436+
return nil, nil, fmt.Errorf("manifest file is empty: %w", err)
437+
}
438+
425439
return nil, nil, fmt.Errorf("failed to parse manifest file: %w", err)
426440
}
427441

0 commit comments

Comments
 (0)