• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / deployments / 972678690

18 Aug 2023 07:14PM UTC coverage: 79.678% (+0.07%) from 79.613%
972678690

Pull #901

gitlab-ci

merlin-northern
test: docs and acc test

Ticket: MEN-6623
Signed-off-by: Peter Grzybowski <peter@northern.tech>
Pull Request #901: feat: save and get the update types

74 of 85 new or added lines in 4 files covered. (87.06%)

391 existing lines in 3 files now uncovered.

7810 of 9802 relevant lines covered (79.68%)

34.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.48
/store/mongo/migrations.go
1
// Copyright 2023 Northern.tech AS
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 implied.
12
//        See the License for the specific language governing permissions and
13
//        limitations under the License.
14
package mongo
15

16
import (
17
        "context"
18

19
        "github.com/mendersoftware/go-lib-micro/log"
20
        "github.com/mendersoftware/go-lib-micro/mongo/migrate"
21
        ctx_store "github.com/mendersoftware/go-lib-micro/store"
22
        "github.com/pkg/errors"
23
        "go.mongodb.org/mongo-driver/mongo"
24
)
25

26
const (
27
        DbVersion        = "1.2.17"
28
        DbMinimumVersion = "1.2.14"
29
        DbName           = "deployment_service"
30
)
31

32
func Migrate(ctx context.Context,
33
        version string,
34
        client *mongo.Client,
35
        automigrate bool) error {
1✔
36

1✔
37
        l := log.FromContext(ctx)
1✔
38

1✔
39
        dbs, err := migrate.GetTenantDbs(ctx, client, ctx_store.IsTenantDb(DbName))
1✔
40
        if err != nil {
1✔
41
                return errors.Wrap(err, "failed go retrieve tenant DBs")
×
42
        }
×
43

44
        if len(dbs) == 0 {
2✔
45
                dbs = []string{DbName}
1✔
46
        }
1✔
47

48
        if automigrate {
2✔
49
                l.Infof("automigrate is ON, will apply migrations")
1✔
50
        } else {
1✔
51
                l.Infof("automigrate is OFF, will check db version compatibility")
×
52
        }
×
53

54
        for _, d := range dbs {
2✔
55
                err := MigrateSingle(ctx, d, version, client, automigrate)
1✔
56
                if err != nil {
1✔
57
                        return err
×
58
                }
×
59
        }
60

61
        return nil
1✔
62
}
63

64
func MigrateSingle(ctx context.Context,
65
        db string,
66
        version string,
67
        client *mongo.Client,
68
        automigrate bool) error {
23✔
69
        l := log.FromContext(ctx)
23✔
70

23✔
71
        l.Infof("migrating %s", db)
23✔
72

23✔
73
        ver, err := migrate.NewVersion(version)
23✔
74
        if err != nil {
23✔
75
                return errors.Wrap(err, "failed to parse service version")
×
76
        }
×
77

78
        m := migrate.SimpleMigrator{
23✔
79
                Client:      client,
23✔
80
                Db:          db,
23✔
81
                Automigrate: automigrate,
23✔
82
        }
23✔
83

23✔
84
        migrations := []migrate.Migration{
23✔
85
                &migration_1_2_1{
23✔
86
                        client: client,
23✔
87
                        db:     db,
23✔
88
                },
23✔
89
                &migration_1_2_2{
23✔
90
                        client: client,
23✔
91
                        db:     db,
23✔
92
                },
23✔
93
                &migration_1_2_3{
23✔
94
                        client: client,
23✔
95
                        db:     db,
23✔
96
                },
23✔
97
                &migration_1_2_4{
23✔
98
                        client: client,
23✔
99
                        db:     db,
23✔
100
                },
23✔
101
                &migration_1_2_5{
23✔
102
                        client: client,
23✔
103
                        db:     db,
23✔
104
                },
23✔
105
                &migration_1_2_6{
23✔
106
                        client: client,
23✔
107
                        db:     db,
23✔
108
                },
23✔
109
                &migration_1_2_7{
23✔
110
                        client: client,
23✔
111
                        db:     db,
23✔
112
                },
23✔
113
                &migration_1_2_9{
23✔
114
                        client: client,
23✔
115
                        db:     db,
23✔
116
                },
23✔
117
                &migration_1_2_10{
23✔
118
                        client: client,
23✔
119
                        db:     db,
23✔
120
                },
23✔
121
                &migration_1_2_11{
23✔
122
                        client: client,
23✔
123
                        db:     db,
23✔
124
                },
23✔
125
                &migration_1_2_13{
23✔
126
                        client: client,
23✔
127
                        db:     db,
23✔
128
                },
23✔
129
                &migration_1_2_14{
23✔
130
                        client: client,
23✔
131
                        db:     db,
23✔
132
                },
23✔
133
                &migration_1_2_15{
23✔
134
                        client: client,
23✔
135
                        db:     db,
23✔
136
                },
23✔
137
                &migration_1_2_16{
23✔
138
                        client: client,
23✔
139
                        db:     db,
23✔
140
                },
23✔
141
                &migration_1_2_17{
23✔
142
                        client: client,
23✔
143
                        db:     db,
23✔
144
                },
23✔
145
        }
23✔
146

23✔
147
        err = m.Apply(ctx, *ver, migrations)
23✔
148
        if err != nil {
23✔
UNCOV
149
                return errors.Wrap(err, "failed to apply migrations")
×
UNCOV
150
        }
×
151

152
        return nil
23✔
153
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc