tools/admin/wskprop.py (49 lines of code) (raw):

#!/usr/bin/env python """Helper methods for whisk properties. /* * 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 os def propfile(base): if base != '': filename = '%s/whisk.properties' % base if os.path.isfile(filename) and os.path.exists(filename): return filename else: parent = os.path.dirname(base) return propfile(parent) if parent != base else '' else: return '' def importPropsIfAvailable(filename): thefile = (open(filename, 'r') if os.path.isfile(filename) and os.path.exists(filename) else []) return importProps(thefile) def importProps(stream): props = {} for line in stream: parts = line.split('=') if len(parts) >= 1: key = parts[0].strip() if len(parts) >= 2: val = parts[1].strip() if key != '' and val != '': props[key.upper().replace('.', '_')] = val elif key != '': props[key.upper().replace('.', '_')] = '' return props # Returns a triple of (length(invalidProperties), requiredProperties, # deferredInfo) prints a message if a required property is not found def checkRequiredProperties(requiredPropertiesByName, properties): """Return a tuple describing the requested required properties.""" requiredPropertiesByValue = [getPropertyValue(key, properties) for key in requiredPropertiesByName] requiredProperties = dict(zip(requiredPropertiesByName, requiredPropertiesByValue)) invalidProperties = [key for key in requiredPropertiesByName if requiredProperties[key] is None] deferredInfo = '' for key, value in requiredProperties.items(): if value in (None, ''): print('property "%s" not found in environment or ' 'property file' % key) else: deferredInfo += 'using %(key)s = %(value)s\n' % {'key': key, 'value': value} return (len(invalidProperties) == 0, requiredProperties, deferredInfo) def getPropertyValue(key, properties): evalue = os.environ.get(key) value = (evalue if evalue != None and evalue != '' else properties[key] if key in properties else None) return value