From ca05e1fd9d95f6e8801279c19fbf3377b200474c Mon Sep 17 00:00:00 2001 From: Brian O'Connor Date: Tue, 7 Jan 2020 11:28:46 -0800 Subject: [PATCH] Enable ONOS to be packaged into different profiles Currently supported profiles: - (default): builds everything - minimal: builds ONOS and general device provider - seba: builds ONOS with OpenFlow and SEBA-related apps - stratum: builds ONOS with NG-SDN APIs and Stratum drivers (P4Runtime, gNMI, gNOI) Change-Id: I6cdd01cba54e45fc23d60f345b23dd86318cdef9 --- BUILD | 78 ++--- tools/build/bazel/modules.bzl | 628 ++++++++++++++++++---------------- 2 files changed, 377 insertions(+), 329 deletions(-) diff --git a/BUILD b/BUILD index 881deaf9a1..a4f56885a6 100644 --- a/BUILD +++ b/BUILD @@ -1,14 +1,40 @@ load("//tools/build/bazel:variables.bzl", "ONOS_VERSION") -load("//tools/build/bazel:modules.bzl", "APPS", "CORE", "FEATURES") +load( + "//tools/build/bazel:modules.bzl", + "CORE", + "FEATURES", + "apps", + "extensions", + "profiles", +) + +# +# ONOS Package Profiles +# Usage: bazel build onos-package --define profile= +# Example: bazel build onos-package --define profile=minimal +# +# To view or update which apps and features are included in each +# profile, open: tools/build/bazel/modules.bzl +# +profiles([ + "minimal", + "seba", + "stratum", +]) filegroup( name = "onos", - srcs = CORE + APPS + [ + srcs = CORE + [ "//tools/build/conf:onos-build-conf", ":onos-package-admin", ":onos-package-test", ":onos-package", - ], + ] + select({ + ":minimal_profile": extensions("minimal") + apps("minimal"), + ":seba_profile": extensions("seba") + apps("seba"), + ":stratum_profile": extensions("stratum") + apps("stratum"), + "//conditions:default": extensions() + apps(), + }), visibility = ["//visibility:public"], ) @@ -40,7 +66,12 @@ genrule( srcs = [ "//tools/package/features:onos-features", ":onos-karaf", - ] + APPS + FEATURES, + ] + FEATURES + select({ + ":minimal_profile": apps("minimal"), + ":seba_profile": apps("seba"), + ":stratum_profile": apps("stratum"), + "//conditions:default": apps(), + }), outs = ["onos.tar.gz"], cmd = "$(location tools/package/onos_stage.py) $(location onos.tar.gz) %s $(location :onos-karaf) $(SRCS)" % ONOS_VERSION, output_to_bindir = True, @@ -48,45 +79,6 @@ genrule( tools = ["tools/package/onos_stage.py"], ) -# Generates the minimal onos-minimal.tar.gz bundle -genrule( - name = "onos-package-minimal", - srcs = [ - "//tools/package/features:onos-features", - ":onos-karaf", - "//drivers/default:onos-drivers-default-oar", - ] + FEATURES, - outs = ["onos-minimal.tar.gz"], - cmd = "$(location tools/package/onos_stage.py) $(location onos-minimal.tar.gz) %s $(location :onos-karaf) $(SRCS)" % ONOS_VERSION, - output_to_bindir = True, - tags = ["local"], - tools = ["tools/package/onos_stage.py"], -) - -# Generates SEBA-specific onos-seba.tar.gz bundle -genrule( - name = "onos-package-seba", - srcs = [ - "//tools/package/features:onos-features", - ":onos-karaf", - "//drivers/default:onos-drivers-default-oar", - "//apps/optical-model:onos-apps-optical-model-oar", - "//providers/openflow/app:onos-providers-openflow-app-oar", - "//providers/openflow/base:onos-providers-openflow-base-oar", - "//providers/host:onos-providers-host-oar", - "//providers/lldp:onos-providers-lldp-oar", - "//apps/mcast:onos-apps-mcast-oar", - "//providers/netcfghost:onos-providers-netcfghost-oar", - "//apps/segmentrouting:onos-apps-segmentrouting-oar", - "//apps/route-service:onos-apps-route-service-oar", - ] + FEATURES, - outs = ["onos-seba.tar.gz"], - cmd = "$(location tools/package/onos_stage.py) $(location onos-seba.tar.gz) %s $(location :onos-karaf) $(SRCS)" % ONOS_VERSION, - output_to_bindir = True, - tags = ["local"], - tools = ["tools/package/onos_stage.py"], -) - # Generates the onos-admin.tar.gz file with remote admin tools genrule( name = "onos-package-admin", diff --git a/tools/build/bazel/modules.bzl b/tools/build/bazel/modules.bzl index 92b8076cc5..9a5b1ef62c 100644 --- a/tools/build/bazel/modules.bzl +++ b/tools/build/bazel/modules.bzl @@ -13,298 +13,17 @@ API = [ CORE = UTILS + API + [ "//core/net:onos-core-net", "//core/common:onos-core-common", + "//core/protobuf/models:onos-core-protobuf-models", + "//core/protobuf/models/proto:onos-core-protobuf-models-proto", "//core/store/primitives:onos-core-primitives", "//core/store/serializers:onos-core-serializers", "//core/store/dist:onos-core-dist", - #"//core/security:onos-security", + # "//core/security:onos-security", "//core/store/persistence:onos-core-persistence", "//cli:onos-cli", - "//protocols/rest/api:onos-protocols-rest-api", - "//protocols/rest/ctl:onos-protocols-rest-ctl", - "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio", - "//protocols/bgp/api:onos-protocols-bgp-api", - "//protocols/bgp/ctl:onos-protocols-bgp-ctl", - "//protocols/netconf/api:onos-protocols-netconf-api", - "//protocols/netconf/ctl:onos-protocols-netconf-ctl", - "//protocols/openflow/api:onos-protocols-openflow-api", - "//protocols/openflow/ctl:onos-protocols-openflow-ctl", - "//protocols/ospf/api:onos-protocols-ospf-api", - "//protocols/ospf/protocol:onos-protocols-ospf-protocol", - "//protocols/ospf/ctl:onos-protocols-ospf-ctl", - "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc", - "//protocols/ovsdb/api:onos-protocols-ovsdb-api", - "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl", - "//protocols/p4runtime/api:onos-protocols-p4runtime-api", - "//protocols/p4runtime/model:onos-protocols-p4runtime-model", - "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio", - "//protocols/pcep/server/api:onos-protocols-pcep-server-api", - "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl", - "//protocols/snmp/api:onos-protocols-snmp-api", - "//protocols/snmp/ctl:onos-protocols-snmp-ctl", - "//protocols/isis/api:onos-protocols-isis-api", - "//protocols/isis/ctl:onos-protocols-isis-ctl", - "//protocols/isis/isisio:onos-protocols-isis-isisio", - "//protocols/lisp/api:onos-protocols-lisp-api", - "//protocols/lisp/ctl:onos-protocols-lisp-ctl", - "//protocols/lisp/msg:onos-protocols-lisp-msg", - "//protocols/tl1/api:onos-protocols-tl1-api", - "//protocols/tl1/ctl:onos-protocols-tl1-ctl", - "//protocols/restconf/client/api:onos-protocols-restconf-client-api", - "//protocols/restconf/client/ctl:onos-protocols-restconf-client-ctl", - "//protocols/xmpp/core/api:onos-protocols-xmpp-core-api", - "//protocols/xmpp/core/ctl:onos-protocols-xmpp-core-ctl", "//drivers/utilities:onos-drivers-utilities", - "//providers/netconf/device:onos-providers-netconf-device", - "//providers/openflow/device:onos-providers-openflow-device", - "//providers/openflow/packet:onos-providers-openflow-packet", - "//providers/openflow/flow:onos-providers-openflow-flow", - "//providers/openflow/group:onos-providers-openflow-group", - "//providers/openflow/meter:onos-providers-openflow-meter", - "//providers/ovsdb/device:onos-providers-ovsdb-device", - "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel", - "//providers/rest/device:onos-providers-rest-device", - "//providers/snmp/device:onos-providers-snmp-device", - "//providers/isis/cfg:onos-providers-isis-cfg", - "//providers/isis/topology:onos-providers-isis-topology", - "//providers/lisp/device:onos-providers-lisp-device", - "//providers/tl1/device:onos-providers-tl1-device", "//providers/general/device:onos-providers-general-device", - "//providers/p4runtime/packet:onos-providers-p4runtime-packet", "//web/api:onos-rest", - "//core/protobuf/models/proto:onos-core-protobuf-models-proto", - "//core/protobuf/models:onos-core-protobuf-models", -] - -ONOS_DRIVERS = [ - # Drivers - "//drivers/default:onos-drivers-default-oar", - "//drivers/arista:onos-drivers-arista-oar", - "//drivers/ciena/waveserver:onos-drivers-ciena-waveserver-oar", - "//drivers/ciena/c5162:onos-drivers-ciena-c5162-oar", - "//drivers/ciena/c5170:onos-drivers-ciena-c5170-oar", - "//drivers/ciena/waveserverai:onos-drivers-ciena-waveserverai-oar", - "//drivers/cisco/netconf:onos-drivers-cisco-netconf-oar", - "//drivers/cisco/rest:onos-drivers-cisco-rest-oar", - "//drivers/corsa:onos-drivers-corsa-oar", - "//drivers/fujitsu:onos-drivers-fujitsu-oar", - "//drivers/lumentum:onos-drivers-lumentum-oar", - "//drivers/netconf:onos-drivers-netconf-oar", - "//drivers/server:onos-drivers-server-oar", - "//drivers/optical:onos-drivers-optical-oar", - "//drivers/ovsdb:onos-drivers-ovsdb-oar", - "//drivers/juniper:onos-drivers-juniper-oar", - "//drivers/lisp:onos-drivers-lisp-oar", - "//drivers/flowspec:onos-drivers-flowspec-oar", - "//drivers/huawei:onos-drivers-huawei-oar", - "//drivers/microsemi/ea1000:onos-drivers-microsemi-ea1000-oar", - "//drivers/oplink:onos-drivers-oplink-oar", - "//drivers/bmv2:onos-drivers-bmv2-oar", - "//drivers/barefoot:onos-drivers-barefoot-oar", - "//drivers/mellanox:onos-drivers-mellanox-oar", - "//drivers/hp:onos-drivers-hp-oar", - "//drivers/p4runtime:onos-drivers-p4runtime-oar", - "//drivers/gnmi:onos-drivers-gnmi-oar", - "//drivers/gnoi:onos-drivers-gnoi-oar", - "//drivers/polatis/netconf:onos-drivers-polatis-netconf-oar", - "//drivers/polatis/openflow:onos-drivers-polatis-openflow-oar", - "//drivers/odtn-driver:onos-drivers-odtn-driver-oar", - "//drivers/stratum:onos-drivers-stratum-oar", - "//drivers/zte:onos-drivers-zte-oar", -] - -ONOS_PROVIDERS = [ - # Providers - "//providers/bgp:onos-providers-bgp-oar", - "//providers/bgpcep:onos-providers-bgpcep-oar", - "//providers/host:onos-providers-host-oar", - "//providers/hostprobing:onos-providers-hostprobing-oar", - "//providers/lldp:onos-providers-lldp-oar", - "//providers/netcfghost:onos-providers-netcfghost-oar", - "//providers/netcfglinks:onos-providers-netcfglinks-oar", - "//providers/netconf:onos-providers-netconf-oar", - "//providers/openflow/message:onos-providers-openflow-message-oar", - "//providers/ovsdb:onos-providers-ovsdb-oar", - "//providers/ovsdb/host:onos-providers-ovsdb-host-oar", - "//providers/ovsdb/base:onos-providers-ovsdb-base-oar", - "//providers/pcep:onos-providers-pcep-oar", - "//providers/null:onos-providers-null-oar", - "//providers/openflow/base:onos-providers-openflow-base-oar", - "//providers/openflow/app:onos-providers-openflow-app-oar", - "//providers/rest:onos-providers-rest-oar", - "//providers/isis:onos-providers-isis-oar", - "//providers/snmp:onos-providers-snmp-oar", - "//providers/link:onos-providers-link-oar", - "//providers/lisp:onos-providers-lisp-oar", - "//providers/tl1:onos-providers-tl1-oar", - "//providers/general:onos-providers-general-oar", - "//providers/p4runtime:onos-providers-p4runtime-oar", - # "//providers/ietfte:onos-providers-ietfte-oar", - "//providers/xmpp/device:onos-providers-xmpp-device-oar", -] - -ONOS_APPS = [ - # Apps - "//apps/dhcp:onos-apps-dhcp-oar", - "//apps/dhcprelay:onos-apps-dhcprelay-oar", - "//apps/fwd:onos-apps-fwd-oar", - "//apps/packet-stats:onos-apps-packet-stats-oar", - "//apps/acl:onos-apps-acl-oar", - "//apps/bgprouter:onos-apps-bgprouter-oar", - "//apps/cip:onos-apps-cip-oar", - "//apps/drivermatrix:onos-apps-drivermatrix-oar", - "//apps/events:onos-apps-events-oar", - "//apps/proxyarp:onos-apps-proxyarp-oar", - "//apps/segmentrouting:onos-apps-segmentrouting-oar", - "//apps/gangliametrics:onos-apps-gangliametrics-oar", - "//apps/graphitemetrics:onos-apps-graphitemetrics-oar", - "//apps/flowanalyzer:onos-apps-flowanalyzer-oar", - "//apps/intentsync:onos-apps-intentsync-oar", - "//apps/influxdbmetrics:onos-apps-influxdbmetrics-oar", - "//apps/portloadbalancer:onos-apps-portloadbalancer-oar", - "//apps/metrics:onos-apps-metrics-oar", - "//apps/mfwd:onos-apps-mfwd-oar", - "//apps/mlb:onos-apps-mlb-oar", - "//apps/mobility:onos-apps-mobility-oar", - "//apps/newoptical:onos-apps-newoptical-oar", - "//apps/optical-model:onos-apps-optical-model-oar", - "//apps/optical-rest:onos-apps-optical-rest-oar", - "//apps/pathpainter:onos-apps-pathpainter-oar", - "//apps/pcep-api:onos-apps-pcep-api-oar", - "//apps/pim:onos-apps-pim-oar", - "//apps/linkprops:onos-apps-linkprops-oar", - "//apps/reactive-routing:onos-apps-reactive-routing-oar", - "//apps/roadm:onos-apps-roadm-oar", - "//apps/sdnip:onos-apps-sdnip-oar", - "//apps/test/cluster-ha:onos-apps-test-cluster-ha-oar", - "//apps/test/demo:onos-apps-test-demo-oar", - "//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar", - "//apps/test/election:onos-apps-test-election-oar", - "//apps/test/flow-perf:onos-apps-test-flow-perf-oar", - "//apps/test/intent-perf:onos-apps-test-intent-perf-oar", - "//apps/test/route-scale:onos-apps-test-route-scale-oar", - "//apps/test/loadtest:onos-apps-test-loadtest-oar", - "//apps/test/netcfg-monitor:onos-apps-test-netcfg-monitor-oar", - "//apps/test/messaging-perf:onos-apps-test-messaging-perf-oar", - "//apps/test/primitive-perf:onos-apps-test-primitive-perf-oar", - "//apps/test/transaction-perf:onos-apps-test-transaction-perf-oar", - "//apps/virtualbng:onos-apps-virtualbng-oar", - "//apps/vpls:onos-apps-vpls-oar", - "//apps/vrouter:onos-apps-vrouter-oar", - "//apps/routing/fibinstaller:onos-apps-routing-fibinstaller-oar", - "//apps/routing/cpr:onos-apps-routing-cpr-oar", - "//apps/routing/fpm:onos-apps-routing-fpm-oar", - "//apps/vtn:onos-apps-vtn-oar", - "//apps/faultmanagement:onos-apps-faultmanagement-oar", - "//apps/openstacknode:onos-apps-openstacknode-oar", - "//apps/openstacknetworking:onos-apps-openstacknetworking-oar", - "//apps/openstacknetworkingui:onos-apps-openstacknetworkingui-oar", - "//apps/openstacktelemetry:onos-apps-openstacktelemetry-oar", - "//apps/openstacktroubleshoot:onos-apps-openstacktroubleshoot-oar", - "//apps/openstackvtap:onos-apps-openstackvtap-oar", - "//apps/k8s-node:onos-apps-k8s-node-oar", - "//apps/k8s-networking:onos-apps-k8s-networking-oar", - "//apps/cpman/app:onos-apps-cpman-app-oar", - "//apps/scalablegateway:onos-apps-scalablegateway-oar", - "//apps/castor:onos-apps-castor-oar", - # "//apps/yms:onos-apps-yms-oar", - "//apps/ofagent:onos-apps-ofagent-oar", - "//apps/mappingmanagement:onos-apps-mappingmanagement-oar", - "//apps/config:onos-apps-config-oar", - "//apps/configsync:onos-apps-configsync-oar", - "//apps/configsync-netconf:onos-apps-configsync-netconf-oar", - "//apps/netconf/client:onos-apps-netconf-client-oar", - "//apps/tunnel:onos-apps-tunnel-oar", - "//apps/virtual:onos-apps-virtual-oar", - "//apps/tetopology:onos-apps-tetopology-oar", - "//apps/tetunnel:onos-apps-tetunnel-oar", - # "//apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel-feature", - # "//apps/tenbi:onos-apps-tenbi-oar", - "//protocols/restconf/server:onos-protocols-restconf-server-oar", - "//apps/restconf:onos-apps-restconf-oar", - "//apps/flowspec-api:onos-apps-flowspec-api-oar", - "//apps/yang:onos-apps-yang-oar", - "//apps/yang-gui:onos-apps-yang-gui-oar", - "//apps/cord-support:onos-apps-cord-support-oar", - "//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar", - "//apps/l3vpn:onos-apps-l3vpn-oar", - "//apps/openroadm:onos-apps-openroadm-oar", - "//apps/artemis:onos-apps-artemis-oar", - "//apps/gluon:onos-apps-gluon-oar", - "//apps/evpnopenflow:onos-apps-evpnopenflow-oar", - "//apps/route-service:onos-apps-route-service-oar", - "//apps/evpn-route-service:onos-apps-evpn-route-service-oar", - "//apps/p4-tutorial/pipeconf:onos-apps-p4-tutorial-pipeconf-oar", - "//apps/p4-tutorial/mytunnel:onos-apps-p4-tutorial-mytunnel-oar", - "//apps/cfm:onos-apps-cfm-oar", - "//apps/routeradvertisement:onos-apps-routeradvertisement-oar", - "//apps/powermanagement:onos-apps-powermanagement-oar", - "//apps/t3:onos-apps-t3-oar", - "//apps/simplefabric:onos-apps-simplefabric-oar", - "//apps/kafka-integration:onos-apps-kafka-integration-oar", - "//apps/rabbitmq:onos-apps-rabbitmq-oar", - "//apps/odtn/api:onos-apps-odtn-api-oar", - "//apps/odtn/service:onos-apps-odtn-service-oar", - "//apps/mcast:onos-apps-mcast-oar", - "//apps/layout:onos-apps-layout-oar", - "//apps/onlp-demo:onos-apps-onlp-demo-oar", - "//apps/imr:onos-apps-imr-oar", - "//apps/nodemetrics:onos-apps-nodemetrics-oar", - "//apps/inbandtelemetry:onos-apps-inbandtelemetry-oar", - "//web/gui2:onos-web-gui2-oar", - "//web/gui:onos-web-gui-oar", - "//apps/workflow:onos-apps-workflow-oar", - "//apps/workflow/ofoverlay:onos-apps-workflow-ofoverlay-oar", - "//apps/packet-throttle:onos-apps-packet-throttle-oar", - "//apps/onos-topo:onos-apps-onos-topo-oar", -] - -PROTOCOL_APPS = [ - "//protocols/grpc:onos-protocols-grpc-oar", - "//protocols/p4runtime:onos-protocols-p4runtime-oar", - "//protocols/gnmi:onos-protocols-gnmi-oar", - "//protocols/gnoi:onos-protocols-gnoi-oar", - "//protocols/xmpp/core:onos-protocols-xmpp-core-oar", - "//protocols/xmpp/pubsub:onos-protocols-xmpp-pubsub-oar", -] - -MODELS = [ - "//models/ietf:onos-models-ietf-oar", - "//models/common:onos-models-common-oar", - "//models/huawei:onos-models-huawei-oar", - "//models/openconfig:onos-models-openconfig-oar", - "//models/openconfig-infinera:onos-models-openconfig-infinera-oar", - "//models/openconfig-odtn:onos-models-openconfig-odtn-oar", - "//models/openroadm:onos-models-openroadm-oar", - "//models/tapi:onos-models-tapi-oar", - "//models/l3vpn:onos-models-l3vpn-oar", - "//models/microsemi:onos-models-microsemi-oar", - "//models/polatis:onos-models-polatis-oar", - "//models/ciena/waveserverai:onos-models-ciena-waveserverai-oar", -] - -PIPELINES = [ - "//pipelines/basic:onos-pipelines-basic-oar", - "//pipelines/fabric:onos-pipelines-fabric-oar", -] - -APP_JARS = [ - "//apps/cpman/api:onos-apps-cpman-api", - "//apps/routing-api:onos-apps-routing-api", - "//apps/dhcp/api:onos-apps-dhcp-api", - "//apps/dhcp/app:onos-apps-dhcp-app", - "//apps/imr/api:onos-apps-imr-api", - "//apps/imr/app:onos-apps-imr-app", - "//apps/dhcprelay/app:onos-apps-dhcprelay-app", - "//apps/dhcprelay/web:onos-apps-dhcprelay-web", - "//apps/fwd:onos-apps-fwd", - "//apps/iptopology-api:onos-apps-iptopology-api", - "//apps/routing/common:onos-apps-routing-common", - "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc", - "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr", - "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr", - "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb", - "//apps/kafka-integration/api:onos-apps-kafka-integration-api", - "//apps/kafka-integration/app:onos-apps-kafka-integration-app", ] FEATURES = [ @@ -317,5 +36,342 @@ FEATURES = [ # "//tools/package/features:onos-security", ] -APPS = ONOS_DRIVERS + ONOS_PROVIDERS + ONOS_APPS + MODELS + PIPELINES + \ - PROTOCOL_APPS + APP_JARS +# +# ONOS Profile Maps +# +# To include a JAR or app in a specific profile, add the profile name +# to the list in the maps below. If multiple profiles are listed, +# then it will be included in each profile. Every item included in the +# map will be included in the default profile (build with no profile +# specified). +# + +# +# ONOS Protocols and Providers +# + +PROTOCOL_MAP = { + "//protocols/bgp/bgpio:onos-protocols-bgp-bgpio": [], + "//protocols/bgp/api:onos-protocols-bgp-api": [], + "//protocols/bgp/ctl:onos-protocols-bgp-ctl": [], + "//protocols/isis/api:onos-protocols-isis-api": [], + "//protocols/isis/ctl:onos-protocols-isis-ctl": [], + "//protocols/isis/isisio:onos-protocols-isis-isisio": [], + "//protocols/lisp/api:onos-protocols-lisp-api": [], + "//protocols/lisp/ctl:onos-protocols-lisp-ctl": [], + "//protocols/lisp/msg:onos-protocols-lisp-msg": [], + "//protocols/netconf/api:onos-protocols-netconf-api": [], + "//protocols/netconf/ctl:onos-protocols-netconf-ctl": [], + "//protocols/openflow/api:onos-protocols-openflow-api": ["seba"], + "//protocols/openflow/ctl:onos-protocols-openflow-ctl": ["seba"], + "//protocols/ospf/api:onos-protocols-ospf-api": [], + "//protocols/ospf/protocol:onos-protocols-ospf-protocol": [], + "//protocols/ospf/ctl:onos-protocols-ospf-ctl": [], + "//protocols/ovsdb/rfc:onos-protocols-ovsdb-rfc": [], + "//protocols/ovsdb/api:onos-protocols-ovsdb-api": [], + "//protocols/ovsdb/ctl:onos-protocols-ovsdb-ctl": [], + "//protocols/p4runtime/api:onos-protocols-p4runtime-api": ["stratum"], + "//protocols/p4runtime/model:onos-protocols-p4runtime-model": ["statum"], + "//protocols/pcep/pcepio:onos-protocols-pcep-pcepio": [], + "//protocols/pcep/server/api:onos-protocols-pcep-server-api": [], + "//protocols/pcep/server/ctl:onos-protocols-pcep-server-ctl": [], + "//protocols/rest/api:onos-protocols-rest-api": [], + "//protocols/rest/ctl:onos-protocols-rest-ctl": [], + "//protocols/restconf/client/api:onos-protocols-restconf-client-api": [], + "//protocols/restconf/client/ctl:onos-protocols-restconf-client-ctl": [], + "//protocols/snmp/api:onos-protocols-snmp-api": [], + "//protocols/snmp/ctl:onos-protocols-snmp-ctl": [], + "//protocols/tl1/api:onos-protocols-tl1-api": [], + "//protocols/tl1/ctl:onos-protocols-tl1-ctl": [], + "//protocols/xmpp/core/api:onos-protocols-xmpp-core-api": [], + "//protocols/xmpp/core/ctl:onos-protocols-xmpp-core-ctl": [], +} + +PROTOCOL_APP_MAP = { + "//protocols/grpc:onos-protocols-grpc-oar": ["stratum"], + "//protocols/gnmi:onos-protocols-gnmi-oar": ["stratum"], + "//protocols/gnoi:onos-protocols-gnoi-oar": ["stratum"], + "//protocols/p4runtime:onos-protocols-p4runtime-oar": ["stratum"], + "//protocols/restconf/server:onos-protocols-restconf-server-oar": [], + "//protocols/xmpp/core:onos-protocols-xmpp-core-oar": [], + "//protocols/xmpp/pubsub:onos-protocols-xmpp-pubsub-oar": [], +} + +PROVIDER_MAP = { + "//providers/netconf/device:onos-providers-netconf-device": [], + "//providers/openflow/device:onos-providers-openflow-device": ["seba"], + "//providers/openflow/packet:onos-providers-openflow-packet": ["seba"], + "//providers/openflow/flow:onos-providers-openflow-flow": ["seba"], + "//providers/openflow/group:onos-providers-openflow-group": ["seba"], + "//providers/openflow/meter:onos-providers-openflow-meter": ["seba"], + "//providers/ovsdb/device:onos-providers-ovsdb-device": [], + "//providers/ovsdb/tunnel:onos-providers-ovsdb-tunnel": [], + "//providers/p4runtime/packet:onos-providers-p4runtime-packet": ["stratum"], + "//providers/rest/device:onos-providers-rest-device": [], + "//providers/snmp/device:onos-providers-snmp-device": [], + "//providers/isis/cfg:onos-providers-isis-cfg": [], + "//providers/isis/topology:onos-providers-isis-topology": [], + "//providers/lisp/device:onos-providers-lisp-device": [], + "//providers/tl1/device:onos-providers-tl1-device": [], +} + +PROVIDER_APP_MAP = { + "//providers/general:onos-providers-general-oar": ["minimal", "seba", "stratum"], + "//providers/bgp:onos-providers-bgp-oar": [], + "//providers/bgpcep:onos-providers-bgpcep-oar": [], + "//providers/host:onos-providers-host-oar": ["seba", "stratum"], + "//providers/hostprobing:onos-providers-hostprobing-oar": ["seba", "stratum"], + "//providers/isis:onos-providers-isis-oar": [], + "//providers/link:onos-providers-link-oar": ["stratum"], + "//providers/lldp:onos-providers-lldp-oar": ["seba", "stratum"], + "//providers/netcfghost:onos-providers-netcfghost-oar": ["seba", "stratum"], + "//providers/netcfglinks:onos-providers-netcfglinks-oar": ["stratum"], + "//providers/netconf:onos-providers-netconf-oar": [], + "//providers/null:onos-providers-null-oar": [], + "//providers/openflow/app:onos-providers-openflow-app-oar": ["seba"], + "//providers/openflow/base:onos-providers-openflow-base-oar": ["seba"], + "//providers/openflow/message:onos-providers-openflow-message-oar": ["seba"], + "//providers/ovsdb:onos-providers-ovsdb-oar": [], + "//providers/ovsdb/host:onos-providers-ovsdb-host-oar": [], + "//providers/ovsdb/base:onos-providers-ovsdb-base-oar": [], + "//providers/p4runtime:onos-providers-p4runtime-oar": ["stratum"], + "//providers/pcep:onos-providers-pcep-oar": [], + "//providers/rest:onos-providers-rest-oar": [], + "//providers/snmp:onos-providers-snmp-oar": [], + "//providers/lisp:onos-providers-lisp-oar": [], + "//providers/tl1:onos-providers-tl1-oar": [], + "//providers/xmpp/device:onos-providers-xmpp-device-oar": [], + # "//providers/ietfte:onos-providers-ietfte-oar": [], +} + +# +# ONOS Drivers +# + +DRIVER_MAP = { + "//drivers/default:onos-drivers-default-oar": ["minimal", "seba", "stratum"], + "//drivers/arista:onos-drivers-arista-oar": [], + "//drivers/bmv2:onos-drivers-bmv2-oar": ["stratum"], + "//drivers/barefoot:onos-drivers-barefoot-oar": ["stratum"], + "//drivers/ciena/waveserver:onos-drivers-ciena-waveserver-oar": [], + "//drivers/ciena/c5162:onos-drivers-ciena-c5162-oar": [], + "//drivers/ciena/c5170:onos-drivers-ciena-c5170-oar": [], + "//drivers/ciena/waveserverai:onos-drivers-ciena-waveserverai-oar": [], + "//drivers/cisco/netconf:onos-drivers-cisco-netconf-oar": [], + "//drivers/cisco/rest:onos-drivers-cisco-rest-oar": [], + "//drivers/corsa:onos-drivers-corsa-oar": [], + "//drivers/flowspec:onos-drivers-flowspec-oar": [], + "//drivers/fujitsu:onos-drivers-fujitsu-oar": [], + "//drivers/gnmi:onos-drivers-gnmi-oar": ["stratum"], + "//drivers/gnoi:onos-drivers-gnoi-oar": ["stratum"], + "//drivers/hp:onos-drivers-hp-oar": [], + "//drivers/huawei:onos-drivers-huawei-oar": [], + "//drivers/juniper:onos-drivers-juniper-oar": [], + "//drivers/lisp:onos-drivers-lisp-oar": [], + "//drivers/lumentum:onos-drivers-lumentum-oar": [], + "//drivers/mellanox:onos-drivers-mellanox-oar": ["stratum"], + "//drivers/microsemi/ea1000:onos-drivers-microsemi-ea1000-oar": [], + "//drivers/netconf:onos-drivers-netconf-oar": [], + "//drivers/odtn-driver:onos-drivers-odtn-driver-oar": [], + "//drivers/oplink:onos-drivers-oplink-oar": [], + "//drivers/optical:onos-drivers-optical-oar": [], + "//drivers/ovsdb:onos-drivers-ovsdb-oar": [], + "//drivers/p4runtime:onos-drivers-p4runtime-oar": ["stratum"], + "//drivers/polatis/netconf:onos-drivers-polatis-netconf-oar": [], + "//drivers/polatis/openflow:onos-drivers-polatis-openflow-oar": [], + "//drivers/server:onos-drivers-server-oar": [], + "//drivers/stratum:onos-drivers-stratum-oar": ["stratum"], + "//drivers/zte:onos-drivers-zte-oar": [], +} + +# +# ONOS Apps and App API JARs +# + +APP_JAR_MAP = { + "//apps/cpman/api:onos-apps-cpman-api": [], + "//apps/routing-api:onos-apps-routing-api": [], + "//apps/dhcp/api:onos-apps-dhcp-api": [], + "//apps/dhcp/app:onos-apps-dhcp-app": [], + "//apps/imr/api:onos-apps-imr-api": [], + "//apps/imr/app:onos-apps-imr-app": [], + "//apps/dhcprelay/app:onos-apps-dhcprelay-app": [], + "//apps/dhcprelay/web:onos-apps-dhcprelay-web": [], + "//apps/fwd:onos-apps-fwd": [], + "//apps/iptopology-api:onos-apps-iptopology-api": [], + "//apps/kafka-integration/api:onos-apps-kafka-integration-api": [], + "//apps/kafka-integration/app:onos-apps-kafka-integration-app": [], + "//apps/routing/common:onos-apps-routing-common": [], + "//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc": [], + "//apps/vtn/sfcmgr:onos-apps-vtn-sfcmgr": [], + "//apps/vtn/vtnmgr:onos-apps-vtn-vtnmgr": [], + "//apps/vtn/vtnweb:onos-apps-vtn-vtnweb": [], +} + +APP_MAP = { + "//apps/acl:onos-apps-acl-oar": [], + "//apps/artemis:onos-apps-artemis-oar": [], + "//apps/bgprouter:onos-apps-bgprouter-oar": [], + "//apps/castor:onos-apps-castor-oar": [], + "//apps/cfm:onos-apps-cfm-oar": [], + "//apps/cip:onos-apps-cip-oar": [], + "//apps/config:onos-apps-config-oar": [], + "//apps/configsync-netconf:onos-apps-configsync-netconf-oar": [], + "//apps/configsync:onos-apps-configsync-oar": [], + "//apps/cord-support:onos-apps-cord-support-oar": [], + "//apps/cpman/app:onos-apps-cpman-app-oar": [], + "//apps/dhcp:onos-apps-dhcp-oar": [], + "//apps/dhcprelay:onos-apps-dhcprelay-oar": [], + "//apps/drivermatrix:onos-apps-drivermatrix-oar": [], + "//apps/events:onos-apps-events-oar": [], + "//apps/evpn-route-service:onos-apps-evpn-route-service-oar": [], + "//apps/evpnopenflow:onos-apps-evpnopenflow-oar": [], + "//apps/faultmanagement:onos-apps-faultmanagement-oar": [], + "//apps/flowanalyzer:onos-apps-flowanalyzer-oar": [], + "//apps/flowspec-api:onos-apps-flowspec-api-oar": [], + "//apps/fwd:onos-apps-fwd-oar": [], + "//apps/gangliametrics:onos-apps-gangliametrics-oar": [], + "//apps/gluon:onos-apps-gluon-oar": [], + "//apps/graphitemetrics:onos-apps-graphitemetrics-oar": [], + "//apps/imr:onos-apps-imr-oar": [], + "//apps/inbandtelemetry:onos-apps-inbandtelemetry-oar": [], + "//apps/influxdbmetrics:onos-apps-influxdbmetrics-oar": [], + "//apps/intentsync:onos-apps-intentsync-oar": [], + "//apps/k8s-networking:onos-apps-k8s-networking-oar": [], + "//apps/k8s-node:onos-apps-k8s-node-oar": [], + "//apps/kafka-integration:onos-apps-kafka-integration-oar": [], + "//apps/l3vpn:onos-apps-l3vpn-oar": [], + "//apps/layout:onos-apps-layout-oar": [], + "//apps/linkprops:onos-apps-linkprops-oar": [], + "//apps/mappingmanagement:onos-apps-mappingmanagement-oar": [], + "//apps/mcast:onos-apps-mcast-oar": ["seba"], + "//apps/metrics:onos-apps-metrics-oar": [], + "//apps/mfwd:onos-apps-mfwd-oar": [], + "//apps/mlb:onos-apps-mlb-oar": [], + "//apps/mobility:onos-apps-mobility-oar": [], + "//apps/netconf/client:onos-apps-netconf-client-oar": [], + "//apps/network-troubleshoot:onos-apps-network-troubleshoot-oar": [], + "//apps/newoptical:onos-apps-newoptical-oar": [], + "//apps/nodemetrics:onos-apps-nodemetrics-oar": [], + "//apps/odtn/api:onos-apps-odtn-api-oar": [], + "//apps/odtn/service:onos-apps-odtn-service-oar": [], + "//apps/ofagent:onos-apps-ofagent-oar": [], + "//apps/onlp-demo:onos-apps-onlp-demo-oar": [], + "//apps/onos-topo:onos-apps-onos-topo-oar": [], + "//apps/openroadm:onos-apps-openroadm-oar": [], + "//apps/openstacknetworking:onos-apps-openstacknetworking-oar": [], + "//apps/openstacknetworkingui:onos-apps-openstacknetworkingui-oar": [], + "//apps/openstacknode:onos-apps-openstacknode-oar": [], + "//apps/openstacktelemetry:onos-apps-openstacktelemetry-oar": [], + "//apps/openstacktroubleshoot:onos-apps-openstacktroubleshoot-oar": [], + "//apps/openstackvtap:onos-apps-openstackvtap-oar": [], + "//apps/optical-model:onos-apps-optical-model-oar": ["seba"], + "//apps/optical-rest:onos-apps-optical-rest-oar": [], + "//apps/p4-tutorial/mytunnel:onos-apps-p4-tutorial-mytunnel-oar": [], + "//apps/p4-tutorial/pipeconf:onos-apps-p4-tutorial-pipeconf-oar": [], + "//apps/packet-stats:onos-apps-packet-stats-oar": [], + "//apps/packet-throttle:onos-apps-packet-throttle-oar": [], + "//apps/pathpainter:onos-apps-pathpainter-oar": [], + "//apps/pcep-api:onos-apps-pcep-api-oar": [], + "//apps/pim:onos-apps-pim-oar": [], + "//apps/portloadbalancer:onos-apps-portloadbalancer-oar": [], + "//apps/powermanagement:onos-apps-powermanagement-oar": [], + "//apps/proxyarp:onos-apps-proxyarp-oar": [], + "//apps/rabbitmq:onos-apps-rabbitmq-oar": [], + "//apps/reactive-routing:onos-apps-reactive-routing-oar": [], + "//apps/restconf:onos-apps-restconf-oar": [], + "//apps/roadm:onos-apps-roadm-oar": [], + "//apps/route-service:onos-apps-route-service-oar": ["seba"], + "//apps/routeradvertisement:onos-apps-routeradvertisement-oar": [], + "//apps/routing/cpr:onos-apps-routing-cpr-oar": [], + "//apps/routing/fibinstaller:onos-apps-routing-fibinstaller-oar": [], + "//apps/routing/fpm:onos-apps-routing-fpm-oar": [], + "//apps/scalablegateway:onos-apps-scalablegateway-oar": [], + "//apps/sdnip:onos-apps-sdnip-oar": [], + "//apps/segmentrouting:onos-apps-segmentrouting-oar": ["seba"], + "//apps/simplefabric:onos-apps-simplefabric-oar": [], + "//apps/t3:onos-apps-t3-oar": [], + # "//apps/tenbi:onos-apps-tenbi-oar": [], + # "//apps/tenbi/yangmodel:onos-apps-tenbi-yangmodel-feature": [], + "//apps/test/cluster-ha:onos-apps-test-cluster-ha-oar": [], + "//apps/test/demo:onos-apps-test-demo-oar": [], + "//apps/test/distributed-primitives:onos-apps-test-distributed-primitives-oar": [], + "//apps/test/election:onos-apps-test-election-oar": [], + "//apps/test/flow-perf:onos-apps-test-flow-perf-oar": [], + "//apps/test/intent-perf:onos-apps-test-intent-perf-oar": [], + "//apps/test/loadtest:onos-apps-test-loadtest-oar": [], + "//apps/test/messaging-perf:onos-apps-test-messaging-perf-oar": [], + "//apps/test/netcfg-monitor:onos-apps-test-netcfg-monitor-oar": [], + "//apps/test/primitive-perf:onos-apps-test-primitive-perf-oar": [], + "//apps/test/route-scale:onos-apps-test-route-scale-oar": [], + "//apps/test/transaction-perf:onos-apps-test-transaction-perf-oar": [], + "//apps/tetopology:onos-apps-tetopology-oar": [], + "//apps/tetunnel:onos-apps-tetunnel-oar": [], + "//apps/tunnel:onos-apps-tunnel-oar": [], + "//apps/virtual:onos-apps-virtual-oar": [], + "//apps/virtualbng:onos-apps-virtualbng-oar": [], + "//apps/vpls:onos-apps-vpls-oar": [], + "//apps/vrouter:onos-apps-vrouter-oar": [], + "//apps/vtn:onos-apps-vtn-oar": [], + "//apps/workflow/ofoverlay:onos-apps-workflow-ofoverlay-oar": [], + "//apps/workflow:onos-apps-workflow-oar": [], + "//apps/yang-gui:onos-apps-yang-gui-oar": [], + "//apps/yang:onos-apps-yang-oar": [], + # "//apps/yms:onos-apps-yms-oar": [], + "//web/gui:onos-web-gui-oar": [], + "//web/gui2:onos-web-gui2-oar": ["stratum"], +} + +# +# Pipelines and Models +# + +PIPELINE_MAP = { + "//pipelines/basic:onos-pipelines-basic-oar": ["stratum"], + "//pipelines/fabric:onos-pipelines-fabric-oar": ["stratum"], +} + +MODELS_MAP = { + "//models/ietf:onos-models-ietf-oar": [], + "//models/common:onos-models-common-oar": [], + "//models/huawei:onos-models-huawei-oar": [], + "//models/openconfig:onos-models-openconfig-oar": [], + "//models/openconfig-infinera:onos-models-openconfig-infinera-oar": [], + "//models/openconfig-odtn:onos-models-openconfig-odtn-oar": [], + "//models/openroadm:onos-models-openroadm-oar": [], + "//models/tapi:onos-models-tapi-oar": [], + "//models/l3vpn:onos-models-l3vpn-oar": [], + "//models/microsemi:onos-models-microsemi-oar": [], + "//models/polatis:onos-models-polatis-oar": [], + "//models/ciena/waveserverai:onos-models-ciena-waveserverai-oar": [], +} + +# +# Convenience functions for processing profile maps +# + +def filter(map, profile): + all = not bool(profile) or profile == "all" + return [k for k, v in map.items() if all or profile in v] + +def extensions(profile = None): + return filter(PROTOCOL_MAP, profile) + filter(PROVIDER_MAP, profile) + +def apps(profile = None): + return filter(PROTOCOL_APP_MAP, profile) + \ + filter(PROVIDER_APP_MAP, profile) + \ + filter(DRIVER_MAP, profile) + \ + filter(APP_MAP, profile) + \ + filter(APP_JAR_MAP, profile) + \ + filter(PIPELINE_MAP, profile) + \ + filter(MODELS_MAP, profile) + +# +# Instantiate a config_setting for every profile in the list +# +def profiles(profiles): + for p in profiles: + native.config_setting( + name = "%s_profile" % p, + values = {"define": "profile=%s" % p}, + )