Skip to content

Commit f6e2c35

Browse files
authored
fix(server): fix bucket-udpate bug & server deploy issue (#641)
1 parent b985f33 commit f6e2c35

File tree

16 files changed

+92
-41
lines changed

16 files changed

+92
-41
lines changed

deploy/build/charts/laf-server/templates/deployment.yaml

+5-2
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,13 @@ spec:
5353
value: {{ .Values.databaseUrl | quote}}
5454
- name: JWT_SECRET
5555
value: {{ .Values.jwt.secret | quote}}
56-
- name: SERVER
57-
value: http://api.{{ .Values.domain }}
56+
- name: API_SERVER_URL
57+
value: {{ .Values.apiServerUrl | quote}}
5858
- name: JWT_EXPIRES_IN
5959
value: {{ .Values.jwt.expires_in | quote}}
60+
- name: MINIO_DOMAIN
61+
value: {{ .Values.minio.domain }}
62+
- name: MINIO_INTERNAL_ENDPOINT
6063
- name: MINIO_EXTERNAL_ENDPOINT
6164
value: {{ .Values.minio.external_endpoint }}
6265
- name: MINIO_INTERNAL_ENDPOINT

deploy/build/charts/laf-server/values.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44

55
domain: ""
66
databaseUrl: ""
7+
apiServerUrl: ""
78
minio:
9+
domain: ""
810
external_endpoint: ""
911
internal_endpoint: ""
1012
access_key: ""

deploy/build/start.sh

+5-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ DATABASE_URL="mongodb://${DB_USERNAME}:${DB_PASSWORD}@mongo.${NAMESPACE}.svc.clu
2525
MINIO_ROOT_ACCESS_KEY=$(tr -cd 'a-z0-9' </dev/urandom |head -c16)
2626
MINIO_ROOT_SECRET_KEY=$(tr -cd 'a-z0-9' </dev/urandom |head -c64)
2727
MINIO_EXTERNAL_ENDPOINT="${HTTP_SCHEMA}://oss.${DOMAIN}"
28-
MINIO_INTERNAL_ENDPOINT=minio.${NAMESPACE}.svc.cluster.local:9000
28+
MINIO_INTERNAL_ENDPOINT="${HTTP_SCHEMA}://minio.${NAMESPACE}.svc.cluster.local:9000"
2929
MINIO_DOMAIN=oss.${DOMAIN}
3030

3131
## envs - apisix
@@ -93,11 +93,12 @@ helm install web -n ${NAMESPACE} \
9393

9494
## 6. install laf-server
9595
SERVER_JWT_SECRET=$(tr -cd 'a-f0-9' </dev/urandom |head -c64)
96-
echo 'DATABASE_URL: ' ${DATABASE_URL}
96+
API_SERVER_URL=${HTTP_SCHEMA}://api.${DOMAIN}
9797
helm install server -n ${NAMESPACE} \
98-
--set domain=${DOMAIN} \
9998
--set databaseUrl=${DATABASE_URL} \
10099
--set jwt.secret=${SERVER_JWT_SECRET} \
100+
--set apiServerUrl=${API_SERVER_URL} \
101+
--set minio.domain=${MINIO_DOMAIN} \
101102
--set minio.external_endpoint=${MINIO_EXTERNAL_ENDPOINT} \
102103
--set minio.internal_endpoint=${MINIO_INTERNAL_ENDPOINT} \
103104
--set minio.access_key=${MINIO_ROOT_ACCESS_KEY} \
@@ -106,6 +107,7 @@ helm install server -n ${NAMESPACE} \
106107
--set casdoor.client_id=${CASDOOR_CLIENT_ID} \
107108
--set casdoor.client_secret=${CASDOOR_CLIENT_SECRET} \
108109
--set casdoor.redirect_uri=${CASDOOR_REDIRECT_URI} \
110+
--set domain=${DOMAIN} \
109111
--set apisix.admin_api_url=${APISIX_API_URL} \
110112
--set apisix.admin_api_key=${APISIX_API_KEY} \
111113
./charts/laf-server

runtimes/nodejs/src/handler/debug-func.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ export async function handleDebugFunction(req: IRequest, res: Response) {
3333
return res.status(400).send('x-laf-func-data is required')
3434
}
3535

36+
3637
// parse func_data
3738
let func_data: ICloudFunctionData
3839
try {
39-
func_data = JSON.parse(func_str)
40+
const decoded = decodeURIComponent(func_str)
41+
func_data = JSON.parse(decoded)
4042
} catch (error) {
4143
return res.status(400).send('x-laf-func-data is invalid')
4244
}

server/.env.template

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ JWT_EXPIRES_IN=7d
1010
SERVER=http://localhost:3000
1111

1212
# minio settings
13-
INIO_CLIENT_PATH=mc
13+
MINIO_CLIENT_PATH=mc
14+
MINIO_DOMAIN=localhost
1415
MINIO_EXTERNAL_ENDPOINT=http://localhost:9000
1516
MINIO_INTERNAL_ENDPOINT=http://localhost:9000
1617
MINIO_ROOT_ACCESS_KEY=minio-root

server/env.sh

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
# get server pod name
3+
POD_NAME=$(kubectl get pods --namespace laf-system -l "app.kubernetes.io/name=laf-server,app.kubernetes.io/instance=server" -o jsonpath="{.items[0].metadata.name}")
4+
5+
# kubectl exec to get the pod env
6+
kubectl exec -it ${POD_NAME} -n laf-system -- env > .env
7+
8+
# remove MINIO_CLIENT_PATH line
9+
sed -i '' '/MINIO_CLIENT_PATH/d' .env
10+
11+
# replace 'mongo.laf-system.svc.cluster.local' with '127.0.0.1'
12+
sed -i '' 's/mongo.laf-system.svc.cluster.local/127.0.0.1/g' .env
13+
14+
# replace 'w=majority' with 'w=majority&directConnection=true'
15+
sed -i '' 's/w=majority/w=majority\&directConnection=true/g' .env

server/package-lock.json

+15-15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
"eslint-plugin-prettier": "^4.0.0",
8484
"jest": "28.1.3",
8585
"prettier": "^2.3.2",
86-
"prisma": "^4.7.1",
86+
"prisma": "^4.8.1",
8787
"source-map-support": "^0.5.20",
8888
"supertest": "^6.1.3",
8989
"ts-jest": "28.0.8",

server/prisma/schema.prisma

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ type RegionGatewayConf {
7373

7474
type RegionStorageConf {
7575
driver String // minio
76+
domain String
7677
externalEndpoint String
7778
internalEndpoint String
7879
accessKey String

server/src/constants.ts

+30-5
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,41 @@ export class ServerConfig {
7474
}
7575
}
7676

77-
static get SERVER() {
78-
return process.env.SERVER || 'http://localhost:3000'
77+
static get API_SERVER_URL() {
78+
return process.env.API_SERVER_URL || 'http://localhost:3000'
79+
}
80+
81+
static get DOMAIN() {
82+
return process.env.DOMAIN || 'localhost'
83+
}
84+
85+
static get APISIX_API_URL() {
86+
return process.env.APISIX_API_URL
87+
}
88+
89+
static get APISIX_API_KEY() {
90+
return process.env.APISIX_API_KEY
91+
}
92+
93+
static get MINIO_DOMAIN() {
94+
return process.env.MINIO_DOMAIN
7995
}
8096

81-
/**
82-
* The external endpoint of oss server
83-
*/
8497
static get MINIO_EXTERNAL_ENDPOINT() {
8598
return process.env.MINIO_EXTERNAL_ENDPOINT
8699
}
100+
101+
static get MINIO_INTERNAL_ENDPOINT() {
102+
return process.env.MINIO_INTERNAL_ENDPOINT
103+
}
104+
105+
static get MINIO_ROOT_ACCESS_KEY() {
106+
return process.env.MINIO_ROOT_ACCESS_KEY
107+
}
108+
109+
static get MINIO_ROOT_SECRET_KEY() {
110+
return process.env.MINIO_ROOT_SECRET_KEY
111+
}
87112
}
88113

89114
export class ResourceLabels {

server/src/initializer/initializer.service.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,20 @@ export class InitializerService {
3939
storageConf: {
4040
set: {
4141
driver: 'minio',
42-
externalEndpoint: process.env.MINIO_EXTERNAL_ENDPOINT,
43-
internalEndpoint: process.env.MINIO_INTERNAL_ENDPOINT,
44-
accessKey: process.env.MINIO_ROOT_ACCESS_KEY,
45-
secretKey: process.env.MINIO_ROOT_SECRET_KEY,
42+
domain: ServerConfig.MINIO_DOMAIN,
43+
externalEndpoint: ServerConfig.MINIO_EXTERNAL_ENDPOINT,
44+
internalEndpoint: ServerConfig.MINIO_INTERNAL_ENDPOINT,
45+
accessKey: ServerConfig.MINIO_ROOT_ACCESS_KEY,
46+
secretKey: ServerConfig.MINIO_ROOT_SECRET_KEY,
4647
},
4748
},
4849
gatewayConf: {
4950
set: {
5051
driver: 'apisix',
51-
domain: process.env.DOMAIN,
52+
domain: ServerConfig.DOMAIN,
5253
tls: false,
53-
apiUrl: process.env.APISIX_API_URL,
54-
apiKey: process.env.APISIX_API_KEY,
54+
apiUrl: ServerConfig.APISIX_API_URL,
55+
apiKey: ServerConfig.APISIX_API_KEY,
5556
},
5657
},
5758
},

server/src/main.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ async function bootstrap() {
3030
.setTitle('Open API Documentation of laf')
3131
.setDescription('`The APIs of laf server`')
3232
.setVersion('1.0.alpha')
33-
.addServer(ServerConfig.SERVER, 'current server')
33+
.addServer(ServerConfig.API_SERVER_URL, 'current server')
3434
.addServer('http://dev.server:3000', 'dev server')
3535
.addBearerAuth(
3636
{ type: 'http', scheme: 'bearer', bearerFormat: 'JWT', in: 'header' },

server/src/storage/bucket.controller.ts

-2
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,6 @@ export class BucketController {
119119
throw new HttpException('bucket not found', HttpStatus.NOT_FOUND)
120120
}
121121

122-
// TODO check the storage capacity of the app
123-
124122
const res = await this.bucketService.update(bucket, dto)
125123
if (null === res) {
126124
return ResponseUtil.error('update bucket failed')

server/src/storage/bucket.service.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export class BucketService {
8080

8181
async update(bucket: StorageBucket, dto: UpdateBucketDto) {
8282
// update bucket in minio
83-
const region = await this.regionService.findOne(bucket.appid)
83+
const region = await this.regionService.findByAppId(bucket.appid)
8484
const out = await this.minioService.updateBucketPolicy(
8585
region,
8686
bucket.name,

server/src/storage/dto/create-bucket.dto.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'
1+
import { ApiProperty } from '@nestjs/swagger'
22
import { BucketPolicy } from '@prisma/client'
3-
import { IsEnum, IsNotEmpty, IsString, Length } from 'class-validator'
3+
import { IsEnum, IsNotEmpty, Length } from 'class-validator'
44

55
export class CreateBucketDto {
66
@ApiProperty({

server/src/storage/minio/minio.service.ts

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export class MinioService {
131131
bucket: string,
132132
policy: BucketPolicy,
133133
) {
134+
assert.ok(region, 'empty region got')
134135
assert.ok(bucket, 'empty bucket name got')
135136

136137
const s3 = this.getClient(region)

0 commit comments

Comments
 (0)