actions/secrets/user_metadata.py (36 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
import json
import logging
from datetime import datetime
import nuvolaris.bcrypt_util as bu
from nuvolaris.user_config import UserConfig
class UserMetadata:
_data = {}
def __init__(self, ucfg: UserConfig):
password = ucfg.get('password')
salted_password = bu.hash_password(password)
self._data = {
"login": ucfg.get('namespace'),
"password": salted_password,
"password_timestamp": datetime.now().isoformat(),
"email": ucfg.get('email'),
"metadata": [],
"quota": []
}
if ucfg.exists("object-storage.quota"):
self.add_quota("OBJECT_STORAGE", ucfg.get("object-storage.quota"))
if ucfg.exists("mongodb.quota"):
self.add_quota("MONGODB", ucfg.get("mongodb.quota"))
if ucfg.exists("redis.quota"):
self.add_quota("REDIS", ucfg.get("redis.quota"))
if ucfg.exists("postgres.quota"):
self.add_quota("POSTGRES", ucfg.get("postgres.quota"))
def dump(self):
logging.debug(json.dumps(self._data))
def add_metadata(self, key: str, value: str):
"""
append an entry to the metadata with this structure {"key":key, "value":value}
"""
logging.debug(f"adding ({key}={value})")
self._data['metadata'].append({"key": key, "value": value})
def add_quota(self, key: str, value: str):
"""
append an entry to the quota with this structure {"key":key, "value":value}
"""
logging.debug(f"adding ({key}={value})")
self._data['quota'].append({"key": key, "value": value})
def get_metadata(self):
return self._data