blob: ec2ccfeecb585388460f5fd38ff4ab6f906c968d [file]
# 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 logging, time
import openserverless.kopf_util as kopf_util
import openserverless.userdb_util as userdb
from openserverless.user_config import UserConfig
from openserverless.user_metadata import UserMetadata
def patch(ucfg: UserConfig, user_metadata: UserMetadata, diff, status, owner=None, name=None):
"""
Implements the patching logic of the openserverless operator to handle chanages on the openserverless wsku
resources.
"""
logging.info(status)
what_to_do = kopf_util.detect_wsku_changes(diff)
if len(what_to_do) == 0:
logging.warn("*** no relevant changes identified by the user operator patcher. Skipping processing")
return None
for key in what_to_do.keys():
logging.info(f"{key}={what_to_do[key]}")
# supporting updating password and quota info
if "password" in what_to_do:
userdb.update_user_metadata_password(ucfg.get('namespace'), ucfg.get('password'))
if "quota" in what_to_do:
userdb.update_user_metadata_quota(ucfg.get('namespace'),user_metadata.get_metadata()["quota"])