mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-18 02:41:49 +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 = [
|
ONOS_APPS = [
|
||||||
# Apps
|
# Apps
|
||||||
#"//apps/dhcp:onos-apps-dhcp-oar",
|
"//apps/dhcp:onos-apps-dhcp-oar",
|
||||||
#"//apps/dhcprelay:onos-apps-dhcprelay-oar",
|
#"//apps/dhcprelay:onos-apps-dhcprelay-oar",
|
||||||
#"//apps/fwd:onos-apps-fwd-oar",
|
#"//apps/fwd:onos-apps-fwd-oar",
|
||||||
#"//apps/packet-stats:onos-apps-packet-stats-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/bgprouter:onos-apps-bgprouter-oar",
|
||||||
#"//apps/cip:onos-apps-cip-oar",
|
#"//apps/cip:onos-apps-cip-oar",
|
||||||
#"//apps/drivermatrix:onos-apps-drivermatrix-oar",
|
#"//apps/drivermatrix:onos-apps-drivermatrix-oar",
|
||||||
@ -280,8 +280,8 @@ PIPELINES = [
|
|||||||
APP_JARS = [
|
APP_JARS = [
|
||||||
#"//apps/cpman/api:onos-apps-cpman-api",
|
#"//apps/cpman/api:onos-apps-cpman-api",
|
||||||
#"//apps/routing-api:onos-apps-routing-api",
|
#"//apps/routing-api:onos-apps-routing-api",
|
||||||
#"//apps/dhcp/api:onos-apps-dhcp-api",
|
"//apps/dhcp/api:onos-apps-dhcp-api",
|
||||||
#"//apps/dhcp/app:onos-apps-dhcp-app",
|
"//apps/dhcp/app:onos-apps-dhcp-app",
|
||||||
#"//apps/imr/api:onos-apps-imr-api",
|
#"//apps/imr/api:onos-apps-imr-api",
|
||||||
#"//apps/imr/app:onos-apps-imr-app",
|
#"//apps/imr/app:onos-apps-imr-app",
|
||||||
#"//apps/dhcprelay:onos-apps-dhcprelay",
|
#"//apps/dhcprelay:onos-apps-dhcprelay",
|
||||||
|
@ -33,6 +33,9 @@ def _all_resources(resources_root):
|
|||||||
else:
|
else:
|
||||||
return native.glob([resources_root + "**"])
|
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
|
# Implementation of the rule to call bnd to make an OSGI jar file
|
||||||
def _bnd_impl(ctx):
|
def _bnd_impl(ctx):
|
||||||
if (len(ctx.files.source) == 1):
|
if (len(ctx.files.source) == 1):
|
||||||
@ -56,7 +59,10 @@ def _bnd_impl(ctx):
|
|||||||
import_packages = ctx.attr.import_packages
|
import_packages = ctx.attr.import_packages
|
||||||
exportPackages = "*"
|
exportPackages = "*"
|
||||||
includeResources = ""
|
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 = ""
|
dynamicimportPackages = ""
|
||||||
cp = ""
|
cp = ""
|
||||||
|
|
||||||
@ -83,6 +89,11 @@ def _bnd_impl(ctx):
|
|||||||
progress_message = "Expanding jar file: %s" % jar,
|
progress_message = "Expanding jar file: %s" % jar,
|
||||||
)
|
)
|
||||||
inputDependencies += [classes]
|
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
|
# call bnd to make the OSGI jar file
|
||||||
arguments = [
|
arguments = [
|
||||||
@ -96,7 +107,8 @@ def _bnd_impl(ctx):
|
|||||||
import_packages,
|
import_packages,
|
||||||
exportPackages,
|
exportPackages,
|
||||||
includeResources,
|
includeResources,
|
||||||
webContext,
|
web_context,
|
||||||
|
web_xml_root_path,
|
||||||
dynamicimportPackages,
|
dynamicimportPackages,
|
||||||
classesPath,
|
classesPath,
|
||||||
]
|
]
|
||||||
@ -124,6 +136,8 @@ _bnd = rule(
|
|||||||
"package_name_root": attr.string(),
|
"package_name_root": attr.string(),
|
||||||
"source": attr.label(),
|
"source": attr.label(),
|
||||||
"import_packages": attr.string(),
|
"import_packages": attr.string(),
|
||||||
|
"web_context": attr.string(),
|
||||||
|
"web_xml": attr.label_list(allow_files = True),
|
||||||
"_bnd_exe": attr.label(
|
"_bnd_exe": attr.label(
|
||||||
executable = True,
|
executable = True,
|
||||||
cfg = "host",
|
cfg = "host",
|
||||||
@ -138,8 +152,26 @@ _bnd = rule(
|
|||||||
implementation = _bnd_impl,
|
implementation = _bnd_impl,
|
||||||
)
|
)
|
||||||
|
|
||||||
def wrapped_osgi_jar(name, jar, deps, version = ONOS_VERSION, package_name_root = "org.onosproject", import_packages = "*", visibility = ["//visibility:private"]):
|
def wrapped_osgi_jar(
|
||||||
_bnd(name = name, source = jar, deps = deps, version = version, package_name_root = package_name_root, visibility = visibility, import_packages = import_packages)
|
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(
|
def osgi_jar_with_tests(
|
||||||
name = None,
|
name = None,
|
||||||
@ -154,6 +186,11 @@ def osgi_jar_with_tests(
|
|||||||
test_resources = None,
|
test_resources = None,
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
version = ONOS_VERSION,
|
version = ONOS_VERSION,
|
||||||
|
web_context = None,
|
||||||
|
api_title = "",
|
||||||
|
api_version = "",
|
||||||
|
api_description = "",
|
||||||
|
api_package = "",
|
||||||
import_packages = None):
|
import_packages = None):
|
||||||
if name == None:
|
if name == None:
|
||||||
name = "onos-" + native.package_name().replace("/", "-")
|
name = "onos-" + native.package_name().replace("/", "-")
|
||||||
@ -176,8 +213,11 @@ def osgi_jar_with_tests(
|
|||||||
tests_name = name + "-tests"
|
tests_name = name + "-tests"
|
||||||
tests_jar_deps = list(depset(deps + test_deps)) + [name]
|
tests_jar_deps = list(depset(deps + test_deps)) + [name]
|
||||||
all_test_deps = tests_jar_deps + [tests_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)
|
native.java_library(name = name + "-native", srcs = srcs, resources = resources, deps = deps, visibility = visibility)
|
||||||
|
|
||||||
_bnd(
|
_bnd(
|
||||||
name = name,
|
name = name,
|
||||||
source = name + "-native",
|
source = name + "-native",
|
||||||
@ -186,6 +226,8 @@ def osgi_jar_with_tests(
|
|||||||
package_name_root = package_name_root,
|
package_name_root = package_name_root,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
import_packages = import_packages,
|
import_packages = import_packages,
|
||||||
|
web_context = web_context,
|
||||||
|
web_xml = web_xml,
|
||||||
)
|
)
|
||||||
if test_srcs != []:
|
if test_srcs != []:
|
||||||
native.java_library(
|
native.java_library(
|
||||||
@ -214,7 +256,7 @@ def osgi_jar(
|
|||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
version = ONOS_VERSION,
|
version = ONOS_VERSION,
|
||||||
# TODO - implement these for swagger and web.xml
|
# TODO - implement these for swagger and web.xml
|
||||||
web_context = "",
|
web_context = None,
|
||||||
api_title = "",
|
api_title = "",
|
||||||
api_version = "",
|
api_version = "",
|
||||||
api_description = "",
|
api_description = "",
|
||||||
@ -238,4 +280,5 @@ def osgi_jar(
|
|||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
version = version,
|
version = version,
|
||||||
import_packages = import_packages,
|
import_packages = import_packages,
|
||||||
|
web_context = web_context,
|
||||||
)
|
)
|
||||||
|
@ -74,6 +74,7 @@ public class OSGiWrapper {
|
|||||||
private String bundleLicense;
|
private String bundleLicense;
|
||||||
|
|
||||||
private String webContext;
|
private String webContext;
|
||||||
|
private String webXmlRoot;
|
||||||
private String destdir;
|
private String destdir;
|
||||||
|
|
||||||
// FIXME should consider using Commons CLI, etc.
|
// FIXME should consider using Commons CLI, etc.
|
||||||
@ -94,8 +95,9 @@ public class OSGiWrapper {
|
|||||||
String exportPackages = args[8];
|
String exportPackages = args[8];
|
||||||
String includeResources = args[9];
|
String includeResources = args[9];
|
||||||
String webContext = args[10];
|
String webContext = args[10];
|
||||||
String dynamicimportPackages = args[11];
|
String webXmlRoot = args[11];
|
||||||
String destdir = args[12];
|
String dynamicimportPackages = args[12];
|
||||||
|
String destdir = args[13];
|
||||||
String desc = Joiner.on(' ').join(Arrays.copyOfRange(args, 12, args.length));
|
String desc = Joiner.on(' ').join(Arrays.copyOfRange(args, 12, args.length));
|
||||||
|
|
||||||
OSGiWrapper wrapper = new OSGiWrapper(jar, output, cp,
|
OSGiWrapper wrapper = new OSGiWrapper(jar, output, cp,
|
||||||
@ -104,6 +106,7 @@ public class OSGiWrapper {
|
|||||||
importPackages, exportPackages,
|
importPackages, exportPackages,
|
||||||
includeResources,
|
includeResources,
|
||||||
webContext,
|
webContext,
|
||||||
|
webXmlRoot,
|
||||||
dynamicimportPackages,
|
dynamicimportPackages,
|
||||||
desc,
|
desc,
|
||||||
destdir);
|
destdir);
|
||||||
@ -126,6 +129,7 @@ public class OSGiWrapper {
|
|||||||
String exportPackages,
|
String exportPackages,
|
||||||
String includeResources,
|
String includeResources,
|
||||||
String webContext,
|
String webContext,
|
||||||
|
String webXmlRoot,
|
||||||
String dynamicimportPackages,
|
String dynamicimportPackages,
|
||||||
String bundleDescription,
|
String bundleDescription,
|
||||||
String destdir) {
|
String destdir) {
|
||||||
@ -155,6 +159,7 @@ public class OSGiWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.webContext = webContext;
|
this.webContext = webContext;
|
||||||
|
this.webXmlRoot = webXmlRoot;
|
||||||
this.destdir = destdir;
|
this.destdir = destdir;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +189,7 @@ public class OSGiWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isWab()) {
|
if (isWab()) {
|
||||||
analyzer.setProperty(Analyzer.WAB, "src/main/webapp/");
|
analyzer.setProperty(Analyzer.WAB, webXmlRoot);
|
||||||
analyzer.setProperty("Web-ContextPath", webContext);
|
analyzer.setProperty("Web-ContextPath", webContext);
|
||||||
analyzer.setProperty(Analyzer.IMPORT_PACKAGE, "*,org.glassfish.jersey.servlet,org.jvnet.mimepull\n");
|
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);
|
Path wabRoot = Paths.get(wab);
|
||||||
|
log("wab root " + wabRoot.toString());
|
||||||
includeFiles(dot, null, wabRoot.toString());
|
includeFiles(dot, null, wabRoot.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user