We currently do not run these tests and they also fail. Change-Id: I60c8cbd9495b52fb8b4c848549822a05f921664f
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
#
 | 
						|
# Licensed 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
 | 
						|
import sys
 | 
						|
 | 
						|
import six
 | 
						|
import yaml
 | 
						|
 | 
						|
 | 
						|
def os_family(distro):
 | 
						|
    "Given a distribution, returns a operating system family."
 | 
						|
    family = None
 | 
						|
    if distro in ['centos', 'centos7', 'fedora', 'rhel', 'rhel7']:
 | 
						|
        family = 'redhat'
 | 
						|
    elif distro in ['debian', 'ubuntu']:
 | 
						|
        family = 'debian'
 | 
						|
    elif distro == 'opensuse':
 | 
						|
        family = 'suse'
 | 
						|
    return family
 | 
						|
 | 
						|
 | 
						|
def merge_data(source, destination, distro):
 | 
						|
    """Merges two dictionaries and filters on distro.
 | 
						|
 | 
						|
    Merges two dictionaries and filters on distro family, or default (in order)
 | 
						|
    """
 | 
						|
    result = dict()
 | 
						|
    result.update(destination)
 | 
						|
    family = os_family(distro)
 | 
						|
    for servicename, mapping in six.iteritems(source):
 | 
						|
        if servicename in result:
 | 
						|
            raise Exception("%s already found in services list" % servicename)
 | 
						|
        if distro in mapping:
 | 
						|
            result[servicename] = mapping.get(distro)
 | 
						|
        elif family in mapping:
 | 
						|
            result[servicename] = mapping.get(family)
 | 
						|
        elif 'default' in mapping:
 | 
						|
            result[servicename] = mapping.get('default')
 | 
						|
        else:
 | 
						|
            result[servicename] = servicename
 | 
						|
 | 
						|
    return result
 | 
						|
 | 
						|
 | 
						|
def write_data_to_file(data, service_file_path):
 | 
						|
    """Writes yaml data to a specified path."""
 | 
						|
    with open(service_file_path, 'w') as destination:
 | 
						|
        yaml.dump(data, destination, default_flow_style=False)
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    elements = os.environ.get("IMAGE_ELEMENT").split(' ')
 | 
						|
    element_paths = os.environ.get("ELEMENTS_PATH").split(':')
 | 
						|
    service_names = dict()
 | 
						|
    for element in elements:
 | 
						|
        if not element.strip():
 | 
						|
            continue
 | 
						|
        for element_path in element_paths:
 | 
						|
            data_path = os.path.join(element_path, element, "svc-map")
 | 
						|
            if os.path.exists(data_path):
 | 
						|
                with open(data_path, 'r') as dataFile:
 | 
						|
                    data = yaml.load(dataFile.read())
 | 
						|
                    try:
 | 
						|
                        service_names = merge_data(
 | 
						|
                            data,
 | 
						|
                            service_names,
 | 
						|
                            os.environ.get("DISTRO_NAME"))
 | 
						|
                    except Exception as err:
 | 
						|
                        print("%s.  Check %s for duplicate"
 | 
						|
                              " service name." % (err, element))
 | 
						|
                        sys.exit(1)
 | 
						|
 | 
						|
    write_data_to_file(
 | 
						|
        service_names,
 | 
						|
        os.path.join(os.environ['TMP_MOUNT_PATH'], 'tmp', 'svc-map-services'))
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 |