Skip to content

Commit 784d899

Browse files
iromlimoabu
andauthored
chore(cloud-native)!: remove couchbase support from OCI images (#1885)
Signed-off-by: iromli <[email protected]> Co-authored-by: Mohammad Abudayyeh <[email protected]>
1 parent abbf310 commit 784d899

File tree

5 files changed

+28
-146
lines changed

5 files changed

+28
-146
lines changed

docker-admin-ui/Dockerfile

+2-12
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ EXPOSE 8080
2020
# Assets sync
2121
# ===========
2222

23-
ENV JANS_SOURCE_VERSION=6e00e723a99d700a4f82713b0c25b2d6e3ef5775
23+
ENV JANS_SOURCE_VERSION=871c36da8a2550ee2febd7c0d72c521898b226c3
2424
ARG JANS_SETUP_DIR=jans-linux-setup/jans_setup
2525

2626
# note that as we're pulling from a monorepo (with multiple project in it)
@@ -137,17 +137,7 @@ ENV CN_SECRET_ADAPTER=vault \
137137
# ===============
138138

139139
ENV CN_PERSISTENCE_TYPE=sql \
140-
CN_HYBRID_MAPPING="{}" \
141-
CN_COUCHBASE_URL=localhost \
142-
CN_COUCHBASE_USER=admin \
143-
CN_COUCHBASE_CERT_FILE=/etc/certs/couchbase.crt \
144-
CN_COUCHBASE_CONN_TIMEOUT=10000 \
145-
CN_COUCHBASE_CONN_MAX_WAIT=20000 \
146-
CN_COUCHBASE_SCAN_CONSISTENCY=not_bounded \
147-
CN_COUCHBASE_BUCKET_PREFIX=jans \
148-
CN_COUCHBASE_TRUSTSTORE_ENABLE=true \
149-
CN_COUCHBASE_KEEPALIVE_INTERVAL=30000 \
150-
CN_COUCHBASE_KEEPALIVE_TIMEOUT=2500
140+
CN_HYBRID_MAPPING="{}"
151141

152142
# ===========
153143
# Generic ENV

docker-admin-ui/README.md

+8-19
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,8 @@ The following environment variables are supported by the container:
6363
- `CN_TOKEN_SERVER_USERINFO_ENDPOINT`: User info endpoint at token server (default to `/jans-auth/restv1/userinfo`).
6464
- `CN_TOKEN_SERVER_CLIENT_ID`: Client ID registered at token server.
6565
- `CN_TOKEN_SERVER_CERT_FILE`: Path to token server certificate (default to `/etc/certs/token_server.crt`).
66-
- `CN_PERSISTENCE_TYPE`: Persistence backend being used (one of `sql`, `couchbase`, or `hybrid`; default to `sql`).
66+
- `CN_PERSISTENCE_TYPE`: Persistence backend being used (one of `sql` or `hybrid`; default to `sql`).
6767
- `CN_HYBRID_MAPPING`: Specify data mapping for each persistence (default to `"{}"`). Note this environment only takes effect when `CN_PERSISTENCE_TYPE` is set to `hybrid`. See [hybrid mapping](#hybrid-mapping) section for details.
68-
- `CN_COUCHBASE_URL`: Address of Couchbase server (default to `localhost`).
69-
- `CN_COUCHBASE_USER`: Username of Couchbase server (default to `admin`).
70-
- `CN_COUCHBASE_CERT_FILE`: Couchbase root certificate location (default to `/etc/certs/couchbase.crt`).
71-
- `CN_COUCHBASE_PASSWORD_FILE`: Path to file contains Couchbase password (default to `/etc/jans/conf/couchbase_password`).
72-
- `CN_COUCHBASE_CONN_TIMEOUT`: Connect timeout used when a bucket is opened (default to `10000` milliseconds).
73-
- `CN_COUCHBASE_CONN_MAX_WAIT`: Maximum time to wait before retrying connection (default to `20000` milliseconds).
74-
- `CN_COUCHBASE_SCAN_CONSISTENCY`: Default scan consistency; one of `not_bounded`, `request_plus`, or `statement_plus` (default to `not_bounded`).
75-
- `CN_COUCHBASE_BUCKET_PREFIX`: Prefix for Couchbase buckets (default to `jans`).
76-
- `CN_COUCHBASE_TRUSTSTORE_ENABLE`: Enable truststore for encrypted Couchbase connection (default to `true`).
77-
- `CN_COUCHBASE_KEEPALIVE_INTERVAL`: Keep-alive interval for Couchbase connection (default to `30000` milliseconds).
78-
- `CN_COUCHBASE_KEEPALIVE_TIMEOUT`: Keep-alive timeout for Couchbase connection (default to `2500` milliseconds).
7968
- `CN_SQL_DB_DIALECT`: Dialect name of SQL backend (one of `mysql`, `pgsql`; default to `mysql`).
8069
- `CN_SQL_DB_HOST`: Host of SQL backend (default to `localhost`).
8170
- `CN_SQL_DB_PORT`: Port of SQL backend (default to `3306`).
@@ -95,12 +84,12 @@ Hybrid persistence supports all available persistence types. To configure hybrid
9584

9685
```
9786
{
98-
"default": "<couchbase|sql>",
99-
"user": "<couchbase|sql>",
100-
"site": "<couchbase|sql>",
101-
"cache": "<couchbase|sql>",
102-
"token": "<couchbase|sql>",
103-
"session": "<couchbase|sql>",
87+
"default": "<sql>",
88+
"user": "<sql>",
89+
"site": "<sql>",
90+
"cache": "<sql>",
91+
"token": "<sql>",
92+
"session": "<sql>",
10493
}
10594
```
10695
@@ -112,7 +101,7 @@ Hybrid persistence supports all available persistence types. To configure hybrid
112101
"user": "sql",
113102
"site": "sql",
114103
"cache": "sql",
115-
"token": "couchbase",
104+
"token": "sql",
116105
"session": "sql",
117106
}
118107
```

docker-admin-ui/scripts/bootstrap.py

+13-42
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66

77
from jans.pycloudlib import get_manager
88
from jans.pycloudlib import wait_for_persistence
9-
from jans.pycloudlib.persistence.couchbase import CouchbaseClient
10-
from jans.pycloudlib.persistence.couchbase import id_from_dn
11-
from jans.pycloudlib.persistence.couchbase import sync_couchbase_password
129
from jans.pycloudlib.persistence.sql import doc_id_from_dn
1310
from jans.pycloudlib.persistence.sql import SqlClient
1411
from jans.pycloudlib.persistence.sql import sync_sql_password
@@ -28,9 +25,6 @@ def main():
2825
mapper = PersistenceMapper()
2926
persistence_groups = mapper.groups().keys()
3027

31-
if "couchbase" in persistence_groups:
32-
sync_couchbase_password(manager)
33-
3428
if "sql" in persistence_groups:
3529
sync_sql_password(manager)
3630

@@ -59,7 +53,6 @@ def __init__(self, manager):
5953
self.manager = manager
6054

6155
client_classes = {
62-
"couchbase": CouchbaseClient,
6356
"sql": SqlClient,
6457
}
6558

@@ -167,44 +160,22 @@ def save_config(self):
167160
with open("/app/templates/admin-ui/auiConfiguration.json") as f:
168161
conf_from_file = f.read() % self.ctx
169162

170-
dn = "ou=admin-ui,ou=configuration,o=jans"
171-
172-
if self.persistence_type == "sql":
173-
dn = doc_id_from_dn(dn)
174-
table_name = "jansAppConf"
175-
176-
entry = self.client.get(table_name, dn)
177-
conf = entry.get("jansConfApp") or "{}"
178-
179-
should_update, merged_conf = resolve_conf_app(
180-
json.loads(conf),
181-
json.loads(conf_from_file),
182-
)
163+
dn = doc_id_from_dn("ou=admin-ui,ou=configuration,o=jans")
164+
table_name = "jansAppConf"
183165

184-
if should_update:
185-
logger.info("Updating admin-ui config app")
186-
entry["jansConfApp"] = json.dumps(merged_conf)
187-
entry["jansRevision"] = entry.get("jansRevision", 0) + 1
188-
self.client.update(table_name, dn, entry)
166+
entry = self.client.get(table_name, dn)
167+
conf = entry.get("jansConfApp") or "{}"
189168

190-
elif self.persistence_type == "couchbase":
191-
bucket = os.environ.get("CN_COUCHBASE_BUCKET_PREFIX", "jans")
192-
dn = id_from_dn(dn)
193-
194-
req = self.client.exec_query(f"SELECT META().id, {bucket}.* FROM {bucket} USE KEYS '{dn}'") # nosec: B608
195-
entry = req.json()["results"][0]
196-
197-
conf = entry.get("jansConfApp") or {}
198-
199-
should_update, merged_conf = resolve_conf_app(
200-
conf,
201-
json.loads(conf_from_file),
202-
)
169+
should_update, merged_conf = resolve_conf_app(
170+
json.loads(conf),
171+
json.loads(conf_from_file),
172+
)
203173

204-
if should_update:
205-
logger.info("Updating admin-ui config app")
206-
rev = entry["jansRevision"] + 1
207-
self.client.exec_query(f"UPDATE {bucket} USE KEYS '{dn}' SET jansConfApp={json.dumps(merged_conf)}, jansRevision={rev}") # nosec: B608
174+
if should_update:
175+
logger.info("Updating admin-ui config app")
176+
entry["jansConfApp"] = json.dumps(merged_conf)
177+
entry["jansRevision"] = entry.get("jansRevision", 0) + 1
178+
self.client.update(table_name, dn, entry)
208179

209180

210181
def resolve_conf_app(old_conf, new_conf):

docker-admin-ui/scripts/upgrade.py

+4-70
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from collections import namedtuple
55

66
from jans.pycloudlib import get_manager
7-
from jans.pycloudlib.persistence import CouchbaseClient
87
from jans.pycloudlib.persistence import SqlClient
98
from jans.pycloudlib.persistence import PersistenceMapper
109
from jans.pycloudlib.persistence import doc_id_from_dn
@@ -39,59 +38,8 @@ def modify_entry(self, key, attrs=None, **kwargs):
3938
return self.client.update(table_name, key, attrs), ""
4039

4140

42-
class CouchbaseBackend:
43-
def __init__(self, manager):
44-
self.manager = manager
45-
self.client = CouchbaseClient(manager)
46-
self.type = "couchbase"
47-
48-
def get_entry(self, key, filter_="", attrs=None, **kwargs):
49-
bucket = kwargs.get("bucket")
50-
req = self.client.exec_query(
51-
f"SELECT META().id, {bucket}.* FROM {bucket} USE KEYS '{key}'" # nosec: B608
52-
)
53-
if not req.ok:
54-
return None
55-
56-
try:
57-
_attrs = req.json()["results"][0]
58-
id_ = _attrs.pop("id")
59-
entry = Entry(id_, _attrs)
60-
except IndexError:
61-
entry = None
62-
return entry
63-
64-
def modify_entry(self, key, attrs=None, **kwargs):
65-
bucket = kwargs.get("bucket")
66-
del_flag = kwargs.get("delete_attr", False)
67-
attrs = attrs or {}
68-
69-
if del_flag:
70-
kv = ",".join(attrs.keys())
71-
mod_kv = f"UNSET {kv}"
72-
else:
73-
kv = ",".join([
74-
"{}={}".format(k, json.dumps(v))
75-
for k, v in attrs.items()
76-
])
77-
mod_kv = f"SET {kv}"
78-
79-
query = f"UPDATE {bucket} USE KEYS '{key}' {mod_kv}"
80-
req = self.client.exec_query(query)
81-
82-
if req.ok:
83-
resp = req.json()
84-
status = bool(resp["status"] == "success")
85-
message = resp["status"]
86-
else:
87-
status = False
88-
message = req.text or req.reason
89-
return status, message
90-
91-
9241
BACKEND_CLASSES = {
9342
"sql": SQLBackend,
94-
"couchbase": CouchbaseBackend,
9543
}
9644

9745

@@ -110,16 +58,9 @@ def invoke(self):
11058
self.update_backend_client()
11159

11260
def update_web_client(self):
113-
kwargs = {}
61+
kwargs = {"table_name": "jansClnt"}
11462
client_id = self.manager.config.get("admin_ui_client_id")
115-
id_ = f"inum={client_id},ou=clients,o=jans"
116-
117-
if self.backend.type == "sql":
118-
kwargs = {"table_name": "jansClnt"}
119-
id_ = doc_id_from_dn(id_)
120-
elif self.backend.type == "couchbase":
121-
kwargs = {"bucket": os.environ.get("CN_COUCHBASE_BUCKET_PREFIX", "jans")}
122-
id_ = id_from_dn(id_)
63+
id_ = doc_id_from_dn(f"inum={client_id},ou=clients,o=jans")
12364

12465
entry = self.backend.get_entry(id_, **kwargs)
12566

@@ -188,16 +129,9 @@ def update_web_client(self):
188129
self.backend.modify_entry(entry.id, entry.attrs, **kwargs)
189130

190131
def update_backend_client(self):
191-
kwargs = {}
132+
kwargs = {"table_name": "jansClnt"}
192133
client_id = self.manager.config.get("token_server_admin_ui_client_id")
193-
id_ = f"inum={client_id},ou=clients,o=jans"
194-
195-
if self.backend.type == "sql":
196-
kwargs = {"table_name": "jansClnt"}
197-
id_ = doc_id_from_dn(id_)
198-
elif self.backend.type == "couchbase":
199-
kwargs = {"bucket": os.environ.get("CN_COUCHBASE_BUCKET_PREFIX", "jans")}
200-
id_ = id_from_dn(id_)
134+
id_ = doc_id_from_dn(f"inum={client_id},ou=clients,o=jans")
201135

202136
entry = self.backend.get_entry(id_, **kwargs)
203137

docker-flex-all-in-one/Dockerfile

+1-3
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ RUN ln -sf /app/flex_aio/admin_ui/entrypoint.sh /app/bin/admin-ui-entrypoint.sh
6666
# Assets sync
6767
# ===========
6868

69-
ENV JANS_SOURCE_VERSION=6e00e723a99d700a4f82713b0c25b2d6e3ef5775
69+
ENV JANS_SOURCE_VERSION=871c36da8a2550ee2febd7c0d72c521898b226c3
7070

7171
# note that as we're pulling from a monorepo (with multiple project in it)
7272
# we are using partial-clone and sparse-checkout to get the assets
@@ -141,8 +141,6 @@ ENV JETTY_BASE=/opt/jans/jetty \
141141
CN_LINK_JAVA_OPTIONS="" \
142142
CN_SHARE_AUTH_CONF=false \
143143
CN_SQL_PASSWORD_FILE=/etc/jans/conf/sql_password \
144-
CN_COUCHBASE_PASSWORD_FILE=/etc/jans/conf/couchbase_password \
145-
CN_COUCHBASE_SUPERUSER_PASSWORD_FILE=/etc/jans/conf/couchbase_superuser_password \
146144
CN_KEYCLOAK_LINK_JETTY_HOST=127.0.0.1 \
147145
CN_KEYCLOAK_LINK_JETTY_PORT=9092 \
148146
CN_KEYCLOAK_LINK_JAVA_OPTIONS="" \

0 commit comments

Comments
 (0)