Skip to content

Commit fa7346c

Browse files
Merge pull request #11 from containerum/develop
Develop
2 parents b8abb27 + 1ad71de commit fa7346c

Some content is hidden

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

67 files changed

+2477
-1658
lines changed

.gitlab-ci.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ variables:
1010
SECRET: gitlab-registry
1111
REPOSITORY: ${CI_REGISTRY}/${CI_PROJECT_PATH}
1212
SAND_PG_PASS: "6grZlyWwIrD"
13+
PROJECT: volume
1314

1415
.docker-login: &docker-login
1516
before_script:
@@ -57,7 +58,7 @@ dev-deploy:
5758
name: develop
5859
script:
5960
- cd charts/volume
60-
- helm upgrade --install --debug --namespace=${NAMESPACE} ${CI_PROJECT_NAME} --set image.tag=${CI_COMMIT_SHA:0:8} --set image.secret=${SECRET} --set image.repository=${REPOSITORY} --set env.local.DB_PASSWORD=${SAND_PG_PASS} --set service.externalIP=192.168.88.210 --set tags.db=false --values values.yaml .
61+
- helm upgrade --install --debug --namespace=${NAMESPACE} ${PROJECT} --set image.tag=${CI_COMMIT_SHA:0:8} --set image.secret=${SECRET} --set image.repository=${REPOSITORY} --set env.local.DB_PASSWORD=${SAND_PG_PASS} --set service.externalIP=88.99.247.59 --set tags.db=false --values values.yaml .
6162
only:
6263
- develop
6364

@@ -141,7 +142,7 @@ prod-deploy:
141142
url: https://web.containerum.io
142143
script:
143144
- cd charts/kube
144-
- helm upgrade --install --namespace=${NAMESPACE} ${CI_PROJECT_NAME} --set image.tag=${CI_COMMIT_TAG} --set image.secret=${SECRET} --set image.repository=${REPOSITORY} --set service.externalIP=${PRODUCTION_IP} --set env.CH_KUBE_API_DEBUG="false" --set env.CH_KUBE_API_TEXTLOG="false" --values values.yaml .
145+
- helm upgrade --install --namespace=${NAMESPACE} ${PROJECT} --set image.tag=${CI_COMMIT_TAG} --set image.secret=${SECRET} --set image.repository=${REPOSITORY} --set service.externalIP=${PRODUCTION_IP} --set env.CH_KUBE_API_DEBUG="false" --set env.CH_KUBE_API_TEXTLOG="false" --values values.yaml .
145146
only:
146147
- tags
147148
when: manual

Dockerfile

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
FROM golang:1.10-alpine as builder
2-
3-
WORKDIR /go/src/git.containerum.net/ch/volume-manager
2+
RUN apk add --update make git
3+
WORKDIR src/git.containerum.net/ch/volume-manager
44
COPY . .
5-
RUN go build -v -ldflags="-w -s" -o /bin/volume-manager ./cmd/volume-manager
5+
RUN VERSION=$(git describe --abbrev=0 --tags) make build-for-docker
66

77
FROM alpine:3.7
8-
RUN mkdir -p /app
9-
COPY --from=builder /bin/volume-manager /app
8+
COPY --from=builder /tmp/volume-manager /
109

1110
ENV MODE="release" \
1211
LOG_LEVEL=4 \
@@ -21,4 +20,4 @@ ENV MODE="release" \
2120

2221
EXPOSE 4343
2322

24-
CMD "/app/volume-manager"
23+
CMD "/volume-manager"

Gopkg.lock

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

Gopkg.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ required = [
3030

3131
[[constraint]]
3232
name = "github.com/containerum/kube-client"
33-
version = "0.23.26"
33+
version = "0.23.27"
3434

3535
[[constraint]]
3636
name = "github.com/go-pg/pg"
@@ -50,11 +50,11 @@ required = [
5050

5151
[[constraint]]
5252
name = "gopkg.in/resty.v1"
53-
version = "~1.6.0"
53+
version = "~1.9.0"
5454

5555
[[constraint]]
5656
name = "github.com/containerum/utils"
57-
version = "~1.0.0"
57+
version = "1.0.7"
5858

5959
[[constraint]]
6060
branch = "v2"

Makefile

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
.PHONY: build build-for-docker test clean release single_release
2+
3+
CMD_DIR:=cmd/volume-manager
4+
5+
# make directory and store path to variable
6+
BUILDS_DIR:=$(PWD)/build
7+
EXECUTABLE:=volume-manager
8+
LDFLAGS=-X 'main.version=$(VERSION)' -w -s -extldflags '-static'
9+
10+
# go has build artifacts caching so soruce tracking not needed
11+
build:
12+
@echo "Building mail-templater for current OS/architecture"
13+
@echo $(LDFLAGS)
14+
@CGO_ENABLED=0 go build -v -ldflags="$(LDFLAGS)" -tags="jsoniter" -o $(BUILDS_DIR)/$(EXECUTABLE) ./$(CMD_DIR)
15+
16+
build-for-docker:
17+
@echo $(LDFLAGS)
18+
@CGO_ENABLED=0 go build -v -ldflags="$(LDFLAGS)" -tags="jsoniter" -o /tmp/$(EXECUTABLE) ./$(CMD_DIR)
19+
20+
test:
21+
@echo "Running tests"
22+
@go test -v ./...
23+
24+
clean:
25+
@rm -rf $(BUILDS_DIR)
26+
27+
install:
28+
@go install -ldflags="$(LDFLAGS)"
29+
30+
# lambda to generate build dir name using os,arch,version
31+
temp_dir_name=$(EXECUTABLE)_$(1)_$(2)_v$(3)
32+
33+
pack_win=zip -r -j $(1).zip $(1) && rm -rf $(1)
34+
pack_nix=tar -C $(1) -cpzf $(1).tar.gz ./ && rm -rf $(1)
35+
36+
define build_release
37+
@echo "Building release package for OS $(1), arch $(2)"
38+
$(eval temp_build_dir=$(BUILDS_DIR)/$(call temp_dir_name,$(1),$(2),$(VERSION)))
39+
@mkdir -p $(temp_build_dir)
40+
$(eval ifeq ($(1),windows)
41+
temp_executable=$(temp_build_dir)/$(EXECUTABLE).exe
42+
else
43+
temp_executable=$(temp_build_dir)/$(EXECUTABLE)
44+
endif)
45+
@echo go build -tags="dev" -ldflags="$(RELEASE_LDFLAGS)" -v -o $(temp_executable) ./$(CMD_DIR)
46+
@GOOS=$(1) GOARCH=$(2) go build -tags="dev" -ldflags="$(RELEASE_LDFLAGS)" -v -o $(temp_executable) ./$(CMD_DIR)
47+
$(eval ifeq ($(1),windows)
48+
pack_cmd = $(call pack_win,$(temp_build_dir))
49+
else
50+
pack_cmd = $(call pack_nix,$(temp_build_dir))
51+
endif)
52+
@$(pack_cmd)
53+
endef
54+
55+
release:
56+
$(call build_release,linux,amd64)
57+
$(call build_release,linux,386)
58+
$(call build_release,linux,arm)
59+
$(call build_release,darwin,amd64)
60+
$(call build_release,windows,amd64)
61+
$(call build_release,windows,386)
62+
63+
single_release:
64+
$(call build_release,$(OS),$(ARCH))
65+
66+
dev:
67+
@echo building $(VERSION)
68+
go build -v -tags="dev" -ldflags="$(LDFLAGS)" ./$(CMD_DIR)
-7.65 KB
Binary file not shown.
17.2 KB
Binary file not shown.

charts/volume/requirements.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dependencies:
22
- name: postgresql
3-
repository: https://kubernetes-charts.storage.googleapis.com
4-
version: 0.12.0
5-
digest: sha256:dd2c4fa897ed5e14211bdb6b844bef019ced7c61a8af53e4ab3b3be5f065c5bc
6-
generated: 2018-05-17T15:09:44.550735398+03:00
3+
repository: https://charts.containerum.io
4+
version: 0.15.0
5+
digest: sha256:06eff7892affc0d4645306617ff169db4c5f71a3a2b3f0b1cae628e2bd5e59d6
6+
generated: 2018-08-28T12:18:21.008955653+03:00

charts/volume/requirements.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dependencies:
22
- name: postgresql
3-
version: "0.12.0"
4-
repository: https://kubernetes-charts.storage.googleapis.com
3+
version: "0.15.0"
4+
repository: https://charts.containerum.io
55
tags:
66
- db

charts/volume/values.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ env:
2424
DB_BASE: "volumemanager"
2525
LISTEN_ADDR: ":4343"
2626
local:
27-
DB_HOST: "postgres-master.postgres.svc.cluster.local:5432"
28-
KUBE_API_ADDR: "kube-api:1214"
29-
BILLING_ADDR: "billing-manager:5000"
27+
DB_HOST: "postgres-master.postgres.svc:5432"
28+
KUBE_API_ADDR: "kube:1214"
29+
BILLING_ADDR: "billing-manager:5005"
3030
DB_PASSWORD:
3131

3232

cmd/volume-manager/main.go

+12-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import (
1313
"git.containerum.net/ch/volume-manager/pkg/router"
1414
"git.containerum.net/ch/volume-manager/pkg/server"
1515
"git.containerum.net/ch/volume-manager/pkg/utils/validation"
16-
"git.containerum.net/ch/volume-manager/pkg/utils/version"
1716
"github.com/containerum/cherry/adaptors/cherrylog"
1817
"github.com/containerum/cherry/adaptors/gonic"
18+
"github.com/containerum/kube-client/pkg/model"
1919
"github.com/containerum/utils/httputil"
2020
"github.com/gin-contrib/cors"
2121
"github.com/gin-gonic/contrib/ginrus"
@@ -56,11 +56,13 @@ func prettyPrintFlags(ctx *cli.Context) {
5656

5757
const httpServerContextKey = "httpsrv"
5858

59+
var version string
60+
5961
func main() {
6062
app := cli.App{
61-
Name: "volume-manager",
63+
Name: "volume",
6264
Description: "Volume-Manager volumes management service for Container hosting",
63-
Version: version.VERSION,
65+
Version: version,
6466
Flags: []cli.Flag{
6567
&ModeFlag,
6668
&LogLevelFlag,
@@ -113,7 +115,13 @@ func main() {
113115
g.Use(cors.New(corsCfg))
114116
}
115117

116-
r := router.NewRouter(g, &router.TranslateValidate{UniversalTranslator: translate, Validate: validate})
118+
status := model.ServiceStatus{
119+
Name: ctx.App.Name,
120+
Version: ctx.App.Version,
121+
StatusOK: true,
122+
}
123+
124+
r := router.NewRouter(g, &status, &router.TranslateValidate{UniversalTranslator: translate, Validate: validate})
117125
r.SetupVolumeHandlers(srv)
118126
r.SetupStorageHandlers(srv)
119127

pkg/clients/kube.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (k *KubeAPIHTTPClient) CreateVolume(ctx context.Context, namespace string,
6565
}
6666

6767
func (k *KubeAPIHTTPClient) UpdateVolume(ctx context.Context, namespace string, volume *model.Volume) error {
68-
k.log.WithField("namespace", namespace).Debugf("update volume %+v")
68+
k.log.WithField("namespace", namespace).Debugf("update volume %+v", volume)
6969

7070
resp, err := k.client.R().
7171
SetContext(ctx).
@@ -123,7 +123,7 @@ func (k *KubeAPIDummyClient) CreateVolume(ctx context.Context, namespace string,
123123
}
124124

125125
func (k *KubeAPIDummyClient) UpdateVolume(ctx context.Context, namespace string, volume *model.Volume) error {
126-
k.log.WithField("namespace", namespace).Debugf("update volume %+v")
126+
k.log.WithField("namespace", namespace).Debugf("update volume %+v", volume)
127127

128128
return nil
129129
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package migrations
2+
3+
import (
4+
"git.containerum.net/ch/volume-manager/pkg/models"
5+
"github.com/go-pg/migrations"
6+
)
7+
8+
func init() {
9+
migrations.Register(func(db migrations.DB) error {
10+
_, err := db.Model(&model.Volume{}).Exec( /* language=sql */
11+
`ALTER TABLE "?TableName" ALTER COLUMN ns_id TYPE TEXT USING (ns_id::TEXT);`)
12+
return err
13+
}, func(db migrations.DB) error {
14+
_, err := db.Model(&model.Volume{}).Exec( /* language=sql */
15+
`ALTER TABLE "?TableName" ALTER COLUMN ns_id TYPE UUID USING (ns_id::UUID);`)
16+
return err
17+
})
18+
}

pkg/database/postgres/volume.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (pgdb *PgDB) VolumeByLabel(ctx context.Context, nsID, label string) (ret mo
2626
Select()
2727
switch err {
2828
case pg.ErrNoRows:
29-
err = errors.ErrResourceNotExists().AddDetailF("volume with %s not exists", label)
29+
err = errors.ErrResourceNotExists().AddDetailF("volume with name '%s' not exists", label)
3030
default:
3131
err = pgdb.handleError(err)
3232
}
@@ -107,7 +107,7 @@ func (pgdb *PgDB) DeleteVolume(ctx context.Context, volume *model.Volume) error
107107

108108
result, err := pgdb.db.Model(volume).
109109
WherePK().
110-
Set("deleted = TRUE").
110+
Set("deleted = ?deleted").
111111
Set("delete_time = now()").
112112
Returning("*").
113113
Update()
@@ -154,7 +154,6 @@ func (pgdb *PgDB) UpdateVolume(ctx context.Context, volume *model.Volume) error
154154
result, err := pgdb.db.Model(volume).
155155
WherePK().
156156
Set("tariff_id = ?tariff_id").
157-
Set("label = ?label").
158157
Set("capacity = ?capacity").
159158
Set("ns_id = ?ns_id").
160159
Set("access_mode = ?access_mode").

0 commit comments

Comments
 (0)