22338e89a44c316be7b18e88e174d2689cc6255e
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data;
23
24 import org.onap.ccsdk.features.sdnr.wt.common.database.data.AliasesEntry;
25 import org.onap.ccsdk.features.sdnr.wt.common.database.data.DatabaseVersion;
26 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.SdnrDbType;
27
28
29 public enum Release {
30
31     EL_ALTO("el alto", "_v1", new DatabaseVersion(2, 2, 0), new DatabaseVersion(2, 2, 0)),
32     FRANKFURT_R1("frankfurt-R1", "-v2", new DatabaseVersion(6, 4, 3), new DatabaseVersion(6, 8, 6)),
33     FRANKFURT_R2("frankfurt-R2", "-v3", new DatabaseVersion(7, 0, 1), new DatabaseVersion(7, 6, 1)),
34     GUILIN_R1("guilin-R1", "-v4", new DatabaseVersion(7,1,1), new DatabaseVersion(7,6,1)),
35         HONOLULU_R1("honolulu-R1", "-v5", new DatabaseVersion(7,1,1), new DatabaseVersion(8,0,0), false),
36         ISTANBUL_R1("istanbul-R1", "-v6", new DatabaseVersion(7,1,1), new DatabaseVersion(8,0,0), false,
37                 new DatabaseVersion(10,2,7), new DatabaseVersion(10,6,0), false);
38
39     public static final Release CURRENT_RELEASE = Release.ISTANBUL_R1;
40
41     private final String value;
42     private final String dbSuffix;
43     private final DatabaseVersion minDbVersion;
44     private final DatabaseVersion maxDbVersion;
45     private final DatabaseVersion minMariaDbVersion;
46     private final DatabaseVersion maxMariaDbVersion;
47     private final boolean includeEndVersion;
48     private final boolean mariaDbIncludeEndVersion;
49
50     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion) {
51         this(s, dbsuffix, minDbVersion, maxDbVersion, true, null, null, false);
52     }
53
54     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion,
55             boolean includeEnd) {
56         this(s, dbsuffix, minDbVersion, maxDbVersion, includeEnd, null, null, false);
57     }
58
59     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion,
60             boolean includeEnd, DatabaseVersion minMariaDbVersion, DatabaseVersion maxMariaDbVersion,
61             boolean mariaDbIncludeEnd) {
62         this.value = s;
63         this.dbSuffix = dbsuffix;
64         this.minDbVersion = minDbVersion;
65         this.maxDbVersion = maxDbVersion;
66         this.includeEndVersion = includeEnd;
67         this.minMariaDbVersion = minMariaDbVersion;
68         this.maxMariaDbVersion = maxMariaDbVersion;
69         this.mariaDbIncludeEndVersion = mariaDbIncludeEnd;
70     }
71
72     @Override
73     public String toString() {
74         return this.value;
75     }
76
77     public String getValue() {
78         return value;
79     }
80
81     public static Release getValueOf(String s) throws Exception {
82         //s = s.toLowerCase();
83         for (Release p : Release.values()) {
84             if (p.value.equals(s)) {
85                 return p;
86             }
87         }
88         throw new Exception("value not found");
89     }
90
91     public static Release getValueBySuffix(String suffix) {
92         if (!suffix.startsWith("-")) {
93             suffix = "-" + suffix;
94         }
95         for (Release r : Release.values()) {
96             if (r.dbSuffix.equals(suffix))
97                 return r;
98         }
99         return null;
100     }
101
102     public static String getDbSuffix(AliasesEntry entry) throws Exception {
103         ComponentName comp = ComponentName.getValueOf(entry.getAlias());
104         if (comp != null) {
105             return entry.getIndex().substring(entry.getAlias().length());
106         }
107         return null;
108     }
109
110     public String getDBSuffix() {
111         return this.dbSuffix;
112     }
113
114     public DatabaseVersion getDBVersion() {
115         return this.minDbVersion;
116     }
117
118     public boolean isDbInRange(DatabaseVersion dbVersion, SdnrDbType type) {
119         if (type == SdnrDbType.ELASTICSEARCH) {
120             if (this.includeEndVersion) {
121                 return dbVersion.isNewerOrEqualThan(minDbVersion) && dbVersion.isOlderOrEqualThan(maxDbVersion);
122             } else {
123                 return dbVersion.isNewerOrEqualThan(minDbVersion) && dbVersion.isOlderThan(maxDbVersion);
124             }
125         } else {
126             if (this.mariaDbIncludeEndVersion) {
127                 return dbVersion.isNewerOrEqualThan(minMariaDbVersion)
128                         && dbVersion.isOlderOrEqualThan(maxMariaDbVersion);
129             } else {
130                 return dbVersion.isNewerOrEqualThan(minMariaDbVersion) && dbVersion.isOlderThan(maxMariaDbVersion);
131             }
132         }
133     }
134 }