mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-17 18:32:28 +02:00
Implement bazel support for web context
- add web context to OSGI rules - build ACL app - build DHCP app Change-Id: I03687d109eb44621458ad7269a435e03eec47495
This commit is contained in:
parent
9952dab238
commit
25747d88f7
22
apps/acl/BUILD
Normal file
22
apps/acl/BUILD
Normal file
@ -0,0 +1,22 @@
|
||||
COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [
|
||||
"@javax_ws_rs_api//jar",
|
||||
"//utils/rest:onlab-rest",
|
||||
"//core/store/serializers:onos-core-serializers",
|
||||
]
|
||||
|
||||
TEST_DEPS = TEST_REST + [
|
||||
"@jersey_server//jar",
|
||||
]
|
||||
|
||||
osgi_jar_with_tests(
|
||||
test_deps = TEST_DEPS,
|
||||
web_context = "/onos/v1/acl",
|
||||
deps = COMPILE_DEPS,
|
||||
)
|
||||
|
||||
onos_app(
|
||||
category = "Security",
|
||||
description = "ONOS ACL application.",
|
||||
title = "Access Control Lists",
|
||||
url = "http://onosproject.org",
|
||||
)
|
11
apps/dhcp/BUILD
Normal file
11
apps/dhcp/BUILD
Normal file
@ -0,0 +1,11 @@
|
||||
BUNDLES = [
|
||||
"//apps/dhcp/api:onos-apps-dhcp-api",
|
||||
"//apps/dhcp/app:onos-apps-dhcp-app",
|
||||
]
|
||||
|
||||
onos_app(
|
||||
category = "Utility",
|
||||
included_bundles = BUNDLES,
|
||||
title = "DHCP Server",
|
||||
url = "http://onosproject.org",
|
||||
)
|
3
apps/dhcp/api/BUILD
Normal file
3
apps/dhcp/api/BUILD
Normal file
@ -0,0 +1,3 @@
|
||||
osgi_jar_with_tests(
|
||||
deps = CORE_DEPS,
|
||||
)
|
18
apps/dhcp/app/BUILD
Normal file
18
apps/dhcp/app/BUILD
Normal file
@ -0,0 +1,18 @@
|
||||
COMPILE_DEPS = CORE_DEPS + JACKSON + KRYO + [
|
||||
"@javax_ws_rs_api//jar",
|
||||
"@org_apache_karaf_shell_console//jar",
|
||||
"//apps/dhcp/api:onos-apps-dhcp-api",
|
||||
"//utils/rest:onlab-rest",
|
||||
"//core/store/serializers:onos-core-serializers",
|
||||
"//cli:onos-cli",
|
||||
]
|
||||
|
||||
osgi_jar_with_tests(
|
||||
api_description = "REST API for DHCP Server",
|
||||
api_package = "org.onosproject.dhcp.rest",
|
||||
api_title = "DHCP Server",
|
||||
api_version = "1.0",
|
||||
test_deps = TEST_ADAPTERS,
|
||||
web_context = "/onos/dhcp",
|
||||
deps = COMPILE_DEPS,
|
||||
)
|
@ -147,11 +147,11 @@ ONOS_PROVIDERS = [
|
||||
|
||||
ONOS_APPS = [
|
||||
# Apps
|
||||
#"//apps/dhcp:onos-apps-dhcp-oar",
|
||||
"//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/acl:onos-apps-acl-oar",
|
||||
#"//apps/bgprouter:onos-apps-bgprouter-oar",
|
||||
#"//apps/cip:onos-apps-cip-oar",
|
||||
#"//apps/drivermatrix:onos-apps-drivermatrix-oar",
|
||||
@ -280,8 +280,8 @@ PIPELINES = [
|
||||
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/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:onos-apps-dhcprelay",
|
||||
|
@ -33,6 +33,9 @@ def _all_resources(resources_root):
|
||||
else:
|
||||
return native.glob([resources_root + "**"])
|
||||
|
||||
def _webapp():
|
||||
return native.glob(["src/main/webapp/**"])
|
||||
|
||||
# Implementation of the rule to call bnd to make an OSGI jar file
|
||||
def _bnd_impl(ctx):
|
||||
if (len(ctx.files.source) == 1):
|
||||
@ -56,7 +59,10 @@ def _bnd_impl(ctx):
|
||||
import_packages = ctx.attr.import_packages
|
||||
exportPackages = "*"
|
||||
includeResources = ""
|
||||
webContext = "NONE"
|
||||
web_context = ctx.attr.web_context
|
||||
if web_context == None or web_context == "":
|
||||
web_context = "NONE"
|
||||
web_xml = ctx.attr.web_xml
|
||||
dynamicimportPackages = ""
|
||||
cp = ""
|
||||
|
||||
@ -83,6 +89,11 @@ def _bnd_impl(ctx):
|
||||
progress_message = "Expanding jar file: %s" % jar,
|
||||
)
|
||||
inputDependencies += [classes]
|
||||
web_xml_root_path = ""
|
||||
if len(web_xml) != 0:
|
||||
web_xml_root = web_xml[0].files.to_list()[0]
|
||||
inputDependencies += [web_xml_root]
|
||||
web_xml_root_path = web_xml_root.path.replace("WEB-INF/web.xml", "")
|
||||
|
||||
# call bnd to make the OSGI jar file
|
||||
arguments = [
|
||||
@ -96,7 +107,8 @@ def _bnd_impl(ctx):
|
||||
import_packages,
|
||||
exportPackages,
|
||||
includeResources,
|
||||
webContext,
|
||||
web_context,
|
||||
web_xml_root_path,
|
||||
dynamicimportPackages,
|
||||
classesPath,
|
||||
]
|
||||
@ -124,6 +136,8 @@ _bnd = rule(
|
||||
"package_name_root": attr.string(),
|
||||
"source": attr.label(),
|
||||
"import_packages": attr.string(),
|
||||
"web_context": attr.string(),
|
||||
"web_xml": attr.label_list(allow_files = True),
|
||||
"_bnd_exe": attr.label(
|
||||
executable = True,
|
||||
cfg = "host",
|
||||
@ -138,8 +152,26 @@ _bnd = rule(
|
||||
implementation = _bnd_impl,
|
||||
)
|
||||
|
||||
def wrapped_osgi_jar(name, jar, deps, version = ONOS_VERSION, package_name_root = "org.onosproject", import_packages = "*", visibility = ["//visibility:private"]):
|
||||
_bnd(name = name, source = jar, deps = deps, version = version, package_name_root = package_name_root, visibility = visibility, import_packages = import_packages)
|
||||
def wrapped_osgi_jar(
|
||||
name,
|
||||
jar,
|
||||
deps,
|
||||
version = ONOS_VERSION,
|
||||
package_name_root = "org.onosproject",
|
||||
import_packages = "*",
|
||||
web_context = None,
|
||||
web_xml = None,
|
||||
visibility = ["//visibility:private"]):
|
||||
_bnd(
|
||||
name = name,
|
||||
source = jar,
|
||||
deps = deps,
|
||||
version = version,
|
||||
package_name_root = package_name_root,
|
||||
visibility = visibility,
|
||||
import_packages = import_packages,
|
||||
web_xml = web_xml,
|
||||
)
|
||||
|
||||
def osgi_jar_with_tests(
|
||||
name = None,
|
||||
@ -154,6 +186,11 @@ def osgi_jar_with_tests(
|
||||
test_resources = None,
|
||||
visibility = ["//visibility:public"],
|
||||
version = ONOS_VERSION,
|
||||
web_context = None,
|
||||
api_title = "",
|
||||
api_version = "",
|
||||
api_description = "",
|
||||
api_package = "",
|
||||
import_packages = None):
|
||||
if name == None:
|
||||
name = "onos-" + native.package_name().replace("/", "-")
|
||||
@ -176,8 +213,11 @@ def osgi_jar_with_tests(
|
||||
tests_name = name + "-tests"
|
||||
tests_jar_deps = list(depset(deps + test_deps)) + [name]
|
||||
all_test_deps = tests_jar_deps + [tests_name]
|
||||
web_xml = _webapp()
|
||||
|
||||
# compile the Java code
|
||||
native.java_library(name = name + "-native", srcs = srcs, resources = resources, deps = deps, visibility = visibility)
|
||||
|
||||
_bnd(
|
||||
name = name,
|
||||
source = name + "-native",
|
||||
@ -186,6 +226,8 @@ def osgi_jar_with_tests(
|
||||
package_name_root = package_name_root,
|
||||
visibility = visibility,
|
||||
import_packages = import_packages,
|
||||
web_context = web_context,
|
||||
web_xml = web_xml,
|
||||
)
|
||||
if test_srcs != []:
|
||||
native.java_library(
|
||||
@ -214,7 +256,7 @@ def osgi_jar(
|
||||
visibility = ["//visibility:public"],
|
||||
version = ONOS_VERSION,
|
||||
# TODO - implement these for swagger and web.xml
|
||||
web_context = "",
|
||||
web_context = None,
|
||||
api_title = "",
|
||||
api_version = "",
|
||||
api_description = "",
|
||||
@ -238,4 +280,5 @@ def osgi_jar(
|
||||
visibility = visibility,
|
||||
version = version,
|
||||
import_packages = import_packages,
|
||||
web_context = web_context,
|
||||
)
|
||||
|
@ -74,6 +74,7 @@ public class OSGiWrapper {
|
||||
private String bundleLicense;
|
||||
|
||||
private String webContext;
|
||||
private String webXmlRoot;
|
||||
private String destdir;
|
||||
|
||||
// FIXME should consider using Commons CLI, etc.
|
||||
@ -94,8 +95,9 @@ public class OSGiWrapper {
|
||||
String exportPackages = args[8];
|
||||
String includeResources = args[9];
|
||||
String webContext = args[10];
|
||||
String dynamicimportPackages = args[11];
|
||||
String destdir = args[12];
|
||||
String webXmlRoot = args[11];
|
||||
String dynamicimportPackages = args[12];
|
||||
String destdir = args[13];
|
||||
String desc = Joiner.on(' ').join(Arrays.copyOfRange(args, 12, args.length));
|
||||
|
||||
OSGiWrapper wrapper = new OSGiWrapper(jar, output, cp,
|
||||
@ -104,6 +106,7 @@ public class OSGiWrapper {
|
||||
importPackages, exportPackages,
|
||||
includeResources,
|
||||
webContext,
|
||||
webXmlRoot,
|
||||
dynamicimportPackages,
|
||||
desc,
|
||||
destdir);
|
||||
@ -126,6 +129,7 @@ public class OSGiWrapper {
|
||||
String exportPackages,
|
||||
String includeResources,
|
||||
String webContext,
|
||||
String webXmlRoot,
|
||||
String dynamicimportPackages,
|
||||
String bundleDescription,
|
||||
String destdir) {
|
||||
@ -155,6 +159,7 @@ public class OSGiWrapper {
|
||||
}
|
||||
|
||||
this.webContext = webContext;
|
||||
this.webXmlRoot = webXmlRoot;
|
||||
this.destdir = destdir;
|
||||
}
|
||||
|
||||
@ -184,7 +189,7 @@ public class OSGiWrapper {
|
||||
}
|
||||
|
||||
if (isWab()) {
|
||||
analyzer.setProperty(Analyzer.WAB, "src/main/webapp/");
|
||||
analyzer.setProperty(Analyzer.WAB, webXmlRoot);
|
||||
analyzer.setProperty("Web-ContextPath", webContext);
|
||||
analyzer.setProperty(Analyzer.IMPORT_PACKAGE, "*,org.glassfish.jersey.servlet,org.jvnet.mimepull\n");
|
||||
}
|
||||
@ -281,6 +286,7 @@ public class OSGiWrapper {
|
||||
}
|
||||
|
||||
Path wabRoot = Paths.get(wab);
|
||||
log("wab root " + wabRoot.toString());
|
||||
includeFiles(dot, null, wabRoot.toString());
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user