diff options
Diffstat (limited to 'meta-facebook/meta-yosemite/recipes-yosemite/rest-api')
3 files changed, 178 insertions, 0 deletions
diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/plat_tree.py b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/plat_tree.py new file mode 100644 index 0000000..b93e98e --- /dev/null +++ b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/plat_tree.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# +# Copyright 2014-present Facebook. All Rights Reserved. +# +# This program file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program in a file named COPYING; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# + +from ctypes import * +import json +import ssl +import socket +import os +from node_api import get_node_api +from node_spb import get_node_spb +from node_bmc import get_node_bmc +from node_server import get_node_server +from node_fruid import get_node_fruid +from node_sensors import get_node_sensors +from node_config import get_node_config +from tree import tree +from pal import * + +def populate_server_node(num): + prsnt = pal_is_server_prsnt(num) + if prsnt == None or prsnt == 0: + return None + + r_server = tree("server" + repr(num), data = get_node_server(num)) + + r_fruid = tree("fruid", data = get_node_fruid("slot" + repr(num))) + + r_sensors = tree("sensors", data = get_node_sensors("slot" + repr(num))) + + r_config = tree("config", data = get_node_config("slot" + repr(num))) + + r_server.addChildren([r_fruid, r_sensors, r_config]) + + return r_server + +# Initialize Platform specific Resource Tree +def init_plat_tree(): + + # Create /api end point as root node + r_api = tree("api", data = get_node_api()) + + # Add /api/spb to represent side plane board + r_spb = tree("spb", data = get_node_spb()) + r_api.addChild(r_spb) + + # Add servers /api/server[1-max] + num = pal_get_num_slots() + for i in range(1, num+1): + r_server = populate_server_node(i) + if r_server: + r_api.addChild(r_server) + + # TODO: Need to add /api/nic to represent NIC Mezz Card + + # Add /api/spb/fruid end point + r_temp = tree("fruid", data = get_node_fruid("spb")) + r_spb.addChild(r_temp) + + # /api/spb/bmc end point + r_temp = tree("bmc", data = get_node_bmc()) + r_spb.addChild(r_temp) + + # /api/spb/sensors end point + r_temp = tree("sensors", data = get_node_sensors("spb")) + r_spb.addChild(r_temp) + + return r_api diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/setup-rest-api.sh b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/setup-rest-api.sh new file mode 100644 index 0000000..bdd79b6 --- /dev/null +++ b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/files/setup-rest-api.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# +# Copyright 2014-present Facebook. All Rights Reserved. +# +# This program file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program in a file named COPYING; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +# + +### BEGIN INIT INFO +# Provides: setup-rest-api +# Required-Start: +# Required-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Set REST API handler +### END INIT INFO + +echo -n "Setup REST API handler... " +/usr/local/bin/rest.py > /tmp/rest.log 2>&1 & +echo "done." diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/rest-api_0.2.bbappend b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/rest-api_0.2.bbappend new file mode 100644 index 0000000..ce33bba --- /dev/null +++ b/meta-facebook/meta-yosemite/recipes-yosemite/rest-api/rest-api_0.2.bbappend @@ -0,0 +1,62 @@ +# Copyright 2015-present Facebook. All Rights Reserved. +# +# This program file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program in a file named COPYING; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA +SUMMARY = "Rest API Daemon" +DESCRIPTION = "Daemon to handle RESTful interface." +SECTION = "base" +PR = "r1" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://rest.py;beginline=5;endline=18;md5=0b1ee7d6f844d472fa306b2fee2167e0" + +DEPENDS_append = " update-rc.d-native" + +S = "${WORKDIR}" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += "file://setup-rest-api.sh \ + file://plat_tree.py \ + file://node_api.py \ + file://node_spb.py \ + file://node_bmc.py \ + file://node_server.py \ + file://node_fruid.py \ + file://node_sensors.py \ + file://node_config.py \ + " + +binfiles += "setup-rest-api.sh plat_tree.py node_api.py node_spb.py node_bmc.py node_server.py node_fruid.py node_sensors.py node_config.py" + +do_install() { + dst="${D}/usr/local/fbpackages/${pkgdir}" + bin="${D}/usr/local/bin" + install -d $dst + install -d $bin + for f in ${binfiles}; do + install -m 755 $f ${dst}/$f + ln -snf ../fbpackages/${pkgdir}/$f ${bin}/$f + done + for f in ${otherfiles}; do + install -m 644 $f ${dst}/$f + done + install -d ${D}${sysconfdir}/init.d + install -d ${D}${sysconfdir}/rcS.d + install -m 755 setup-rest-api.sh ${D}${sysconfdir}/init.d/setup-rest-api.sh + update-rc.d -r ${D} setup-rest-api.sh start 95 2 3 4 5 . +} + +FBPACKAGEDIR = "${prefix}/local/fbpackages" + +FILES_${PN} = "${FBPACKAGEDIR}/rest-api ${prefix}/local/bin ${sysconfdir} " |