[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 <sihan@microsoft.com>
This commit is contained in:
sihuihan88 2017-04-11 13:04:21 -07:00 committed by Shuotian Cheng
parent 4c81204eaf
commit ec73735d21
4 changed files with 39 additions and 21 deletions

View File

@ -47,7 +47,6 @@ class minigraph_encoder(json.JSONEncoder):
return str(obj) return str(obj)
return json.JSONEncoder.default(self, obj) return json.JSONEncoder.default(self, obj)
def parse_png(png, hname): def parse_png(png, hname):
neighbors = {} neighbors = {}
devices = {} devices = {}

View File

@ -15,7 +15,7 @@ setup(name='sonic-config-engine',
author='Taoyu Li', author='Taoyu Li',
author_email='taoyl@microsoft.com', author_email='taoyl@microsoft.com',
url='https://github.com/Azure/sonic-buildimage', url='https://github.com/Azure/sonic-buildimage',
py_modules=['minigraph', 'openconfig_acl'], py_modules=['minigraph', 'openconfig_acl', 'sonic_platform'],
scripts=['sonic-cfggen', 'translate_acl'], scripts=['sonic-cfggen', 'translate_acl'],
install_requires=['lxml', 'jinja2', 'netaddr', 'ipaddr', 'pyyaml', 'pyangbind'], install_requires=['lxml', 'jinja2', 'netaddr', 'ipaddr', 'pyyaml', 'pyangbind'],
test_suite='setup.get_test_suite', test_suite='setup.get_test_suite',

View File

@ -7,9 +7,10 @@ import yaml
import jinja2 import jinja2
import netaddr import netaddr
import json import json
from minigraph import parse_xml
from minigraph import minigraph_encoder 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): def is_ipv4(value):
if not value: if not value:
@ -44,19 +45,6 @@ def unique_name(l):
new_list.append(item) new_list.append(item)
return new_list 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(): def main():
parser=argparse.ArgumentParser(description="Render configuration file from minigraph data and jinja2 template.") parser=argparse.ArgumentParser(description="Render configuration file from minigraph data and jinja2 template.")
parser.add_argument("-m", "--minigraph", help="minigraph xml file") parser.add_argument("-m", "--minigraph", help="minigraph xml file")
@ -74,10 +62,9 @@ def main():
machine_info = get_machine_info() machine_info = get_machine_info()
if machine_info != None: if machine_info != None:
data.update(machine_info) data.update(machine_info)
if machine_info.has_key('onie_platform'): platform_info = get_platform_info(machine_info)
data['platform'] = machine_info['onie_platform'] if platform_info != None:
elif machine_info.has_key('aboot_platform'): data['platform'] = platform_info
data['platform'] = machine_info['aboot_platform']
if args.minigraph != None: if args.minigraph != None:
minigraph = args.minigraph minigraph = args.minigraph

View File

@ -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