From ec73735d21f5f123bdaa89a73fca495dc5098369 Mon Sep 17 00:00:00 2001 From: sihuihan88 Date: Tue, 11 Apr 2017 13:04:21 -0700 Subject: [PATCH] [sonic-cfggen]: Move get_machine_info function to sonic_platform.py (#489) * Move get_machine_info to lib * Add get platform info API * Create sonic_platform.py Signed-off-by: Sihui Han --- src/sonic-config-engine/minigraph.py | 1 - src/sonic-config-engine/setup.py | 2 +- src/sonic-config-engine/sonic-cfggen | 25 +++++------------- src/sonic-config-engine/sonic_platform.py | 32 +++++++++++++++++++++++ 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 src/sonic-config-engine/sonic_platform.py diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index eae87a37e0df..42086625bb90 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -47,7 +47,6 @@ def default(self, obj): return str(obj) return json.JSONEncoder.default(self, obj) - def parse_png(png, hname): neighbors = {} devices = {} diff --git a/src/sonic-config-engine/setup.py b/src/sonic-config-engine/setup.py index b9e6ace7cccf..ac4eb16b30e1 100755 --- a/src/sonic-config-engine/setup.py +++ b/src/sonic-config-engine/setup.py @@ -15,7 +15,7 @@ def get_test_suite(): author='Taoyu Li', author_email='taoyl@microsoft.com', url='https://github.com/Azure/sonic-buildimage', - py_modules=['minigraph', 'openconfig_acl'], + py_modules=['minigraph', 'openconfig_acl', 'sonic_platform'], scripts=['sonic-cfggen', 'translate_acl'], install_requires=['lxml', 'jinja2', 'netaddr', 'ipaddr', 'pyyaml', 'pyangbind'], test_suite='setup.get_test_suite', diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index e47985cf17fc..822f02d7fcc2 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -7,9 +7,10 @@ import yaml import jinja2 import netaddr import json -from minigraph import parse_xml from minigraph import minigraph_encoder - +from minigraph import parse_xml +from sonic_platform import get_machine_info +from sonic_platform import get_platform_info def is_ipv4(value): if not value: @@ -44,19 +45,6 @@ def unique_name(l): new_list.append(item) return new_list -def get_machine_info(): - if not os.path.isfile('/host/machine.conf'): - return None - machine_vars = {} - with open('/host/machine.conf') as machine_file: - for line in machine_file: - tokens = line.split('=') - if len(tokens) < 2: - continue - machine_vars[tokens[0]] = tokens[1].strip() - return machine_vars - - def main(): parser=argparse.ArgumentParser(description="Render configuration file from minigraph data and jinja2 template.") parser.add_argument("-m", "--minigraph", help="minigraph xml file") @@ -74,10 +62,9 @@ def main(): machine_info = get_machine_info() if machine_info != None: data.update(machine_info) - if machine_info.has_key('onie_platform'): - data['platform'] = machine_info['onie_platform'] - elif machine_info.has_key('aboot_platform'): - data['platform'] = machine_info['aboot_platform'] + platform_info = get_platform_info(machine_info) + if platform_info != None: + data['platform'] = platform_info if args.minigraph != None: minigraph = args.minigraph diff --git a/src/sonic-config-engine/sonic_platform.py b/src/sonic-config-engine/sonic_platform.py new file mode 100644 index 000000000000..fdc192d09d0a --- /dev/null +++ b/src/sonic-config-engine/sonic_platform.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +import os + +DOCUMENTATION = ''' +--- +module: sonic_platform +version_added: "1.9" +short_description: Retrive platform related facts for a device. +description: + - Retrieve platform related facts from config files. +''' + +def get_machine_info(): + if not os.path.isfile('/host/machine.conf'): + return None + machine_vars = {} + with open('/host/machine.conf') as machine_file: + for line in machine_file: + tokens = line.split('=') + if len(tokens) < 2: + continue + machine_vars[tokens[0]] = tokens[1].strip() + return machine_vars + +def get_platform_info(machine_info): + if machine_info != None: + if machine_info.has_key('onie_platform'): + return machine_info['onie_platform'] + elif machine_info.has_key('aboot_platform'): + return machine_info['aboot_platform'] + return None +