eclipse / kuksa.cloud Goto Github PK
View Code? Open in Web Editor NEWKuksa Cloud repo
License: Eclipse Public License 2.0
Kuksa Cloud repo
License: Eclipse Public License 2.0
When successfully create a new user a wrong http status code will be returned.
It should be 201 (CREATED) instead of 200 (OK).
I built the new app-store (amd) with the new HawkBit-Ip and ran it locally.
Despite the correct IP inside the application.properties
, creating new apps inside the app-store return an connection error
and prompt me to change the properties IP-address .
Somehow the json property "hawkbitname" can only be at fourth or higher place in the request body.
When I try this
{
"hawkbitname":"test.app.hawkbit.name",
"version":"test.app.version",
"owner":"test.app.owner",
"name":"test.app.name",
"description":"test.app.description",
"publishdate":15432489869
}
I get this
as response
{
"timestamp": "2018-11-26T16:28:31.355+0000",
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: N/A\n at [Source: (PushbackInputStream); line: 2, column: 16] (through reference chain: org.eclipse.kuksa.appstore.model.App["hawkbitname"])",
"path": "/api/1.0/app"
}
on console
2018-11-26 17:28:31.343 WARN 5760 --- [nio-8082-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: N/A
at [Source: (PushbackInputStream); line: 2, column: 16] (through reference chain: org.eclipse.kuksa.appstore.model.App["hawkbitname"])
The code indicates that for creating an app object it only requires "name" and "version" in request body but it requires almost every member variable of the app class.
I tried
{
"name":"test.create.app",
"version":"1.0"
}
But worked only with
{
"name":"test.create.app",
"version":"1.0",
"hawkbitname" : "test.create.app.hawkbit.name",
"description" : "test.create.app.description",
"owner" : "test.create.app.owner",
"publishdate" : 1543245051
}
Please make them either all mandatory or optional.
The deployment of the Eclipse Kuksa Cloud should contain the required files and scripts for the deployment of the Hono-InfluxDB-Connector as part of the Eclipse Kuksa Cloud.
While Appstore README.md states that hawkbit.username
and hawkbit.password
can be configured, HawkbitFeignConfig uses hard-coded values instead.
@trademkose, could you fix that? Thank you!
If there are multiple Software Modules in Hawkbit with the same name but different version, While installing the App from appstore all the versions of the apps are deployed.
I think the FIQL needs to be used to select the specific version of the app.
eg : /rest/v1/softwaremodules?q=name%3D%3Dexample_app%3Bversion%3D%3D1.0.0
see: https://www.eclipse.org/hawkbit/apis/mgmt/softwaremodules/
HTTP-Status should be 201 (CREATED) instead of 200 (OK)
To enable applications in the Kuksa platform to use authentication and authorization we need an service that acts as authorization server. Keycloak (https://www.keycloak.org/) provides such a services and could be integrated into the Kuksa cloud. The first step is to add the deployment of a Keycloak instance to the deployment scripts.
Currently, the HonoInfluxDBConnector stores all incomming values as String:
This prevents, for example, Grafana to query and visualize such data. Thus, data should be stored according to their incomming data type. As a workaround, I used the following code to store all numercial values as double:
for (Map.Entry<String, Object> entry : entries.entrySet()) { if (entry.getValue() instanceof Integer || entry.getValue() instanceof Float || entry.getValue() instanceof Double) { pointBuilder.addField(entry.getKey(), ((Number) entry.getValue()).doubleValue()); } else { pointBuilder.addField(entry.getKey(), entry.getValue().toString()); } }
As the install-error code suggests (bottom: https://flexi.oulu.fi/confluence/display/APPSTACLE/Kuksa+Tests+Results) the new Appstore-Build uses the old /controller/
- instead of the new /rest/
-API, which results in the aforementioned error-message
The install app does not work if the Distribution version has reached 50.
I think this issue happens because by default the REST call has limit 50.
https://www.eclipse.org/hawkbit/apis/mgmt/distributionsets/
This needs to be changed in the appstore.
As an administrator of an Eclipse Kuksa cloud, I would like to be able to deploy and configure the required Hono services as easy as possible. Therefore, we provide a script (or a similar solution) for the deployment of Hono to an existing Kubernetes cluster.
When starting the HonoInfluxDBConnector, there is a compilation error regarding a missing package "javax.annotation", which is used in the InfluxDBClient (@PreDestroy). Adding
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.2</version> </dependency>
solved that issue for me. I'm using openjdk 11.0.3 on Ubuntu 16.04
Are there plans to support Java versions from 9 upwards in the near future?
Follow up to #67: Add a persistent volume claim for traccar server so it becomes persistent.
As an administrator of a Eclipse Kuksa cloud, I want to be able to deploy and configure the required Hawkbit services as easy as possible. Therefore, there could be a script (or a similar solution) for the deployment of Hawkbit to an existing Kubernetes cluster.
From the documentation in the Appstore README, I'm not sure what the purpose of the OEM is. It is part of a convention for names and controllerIds of targets which looks purely informational to me.
However, GroupAdmin users can also be assigned a single OEM. Why is that? Do you know an explanation, @trademkose?
Thanks!
Running the HonoInfluxDBConnector for a longer time caused the following exception:
`2019-04-24 14:08:03.694 ERROR 5517 --- [pool-1-thread-1] org.influxdb.impl.BatchProcessor : Batch could not be sent. Data will be lost
org.influxdb.InfluxDBIOException: java.net.SocketTimeoutException: timeout
at org.influxdb.impl.InfluxDBImpl.execute(InfluxDBImpl.java:514) ~[influxdb-java-2.7.jar:na]
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:312) ~[influxdb-java-2.7.jar:na]
at org.influxdb.impl.BatchProcessor.write(BatchProcessor.java:248) ~[influxdb-java-2.7.jar:na]
at org.influxdb.impl.BatchProcessor$1.run(BatchProcessor.java:202) [influxdb-java-2.7.jar:na]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514) [na:na]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) [na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [na:na]
at java.base/java.lang.Thread.run(Thread.java:844) [na:na]
Caused by: java.net.SocketTimeoutException: timeout
`
Did anyone else stumbled into this kind of issue?
It seems the appstore still uses the DUMMY_SOFTWARE_MODULE in its deployment after it was removed as part of the UNINSTALL_ALL change. I checked out the new version of appstore and tried deploying an app and found that the DUMMY_SOFTWARE_MODULE is deployed along with the actual app artifacts (see image below). I was expecting only the app artifacts to be deployed and not the DUMMY_SOFTWARE_MODULE.
App-manager log running on raspberrypi. The version of app-manager used is latest from github and modified to work with UNINSTALL_ALL change.
When running hawkbit behind TLS termination, it is problematic that hawkbit redirects requests for https://<hostname>:<port>/
to http://<host>:<port>/UI/
. I.e. https
is replaced by http
and UI/
is appended instead of using a relative redirect only. Then the browser tries to connect to the HTTPS port using HTTP, which fails.
The current Eclipse Kuksa Cloud deployment uses Eclipse Hono in version 0.8. In the meantime Eclipse Hono 0.9 and milestones for Eclipse Hono 1.0 have been released. Because of that we should update the deployment of the Eclipse Kuksa Cloud to use a more recent Eclipse Hono version than 0.8.
A convinient user interface for the InfluxDB would be suitable, especially for validating that correct data are sent and also to get insights into the data structure.
It seems that InfluxDB support https://www.influxdata.com/time-series-platform/chronograf/ for this purpose. Is it possible to provide such a dashboard?
When deleting a Software Distribution in Hawkbit, it's previously app in the Appstore remains in the database, and is even visible. However it can not be removed, even if chaning the Appname - neither can the Category of this app be removed. This naturally prevents the reusing of the Appname, even though there is no such functioning app with this Appname in Hawkbit.
Error: Software Module not found on Hawkbit
The documentation for swagger.io is sometimes just copy-paste from other methods.
To enable administrators to remove the changes introduced by the deployment of the Eclipse Kuksa Cloud we should provide a solution to undeploy/delete all resources that are created during the deployment of the Eclipse Kuksa Cloud.
Currently, it is possible to install the same application multiple times. Users should know whether an app has already been installed on a device.
We use a hawkbit deployment that is secured using TLS so clients shall use HTTPS to connect to it. Currently the appstore uses hawkbit.host
and hawkbit.port
to configure a plain HTTP connection and the schema http://
is constant in the sources.
The sources, property files and documentation need to be updated to be able to use hawkbit.url
(that's just a suggestion but the most meaningful one that came to my mind) instead of hawkbit.host
and hawkbit.port
to configure e.g. http://myHawkbitHost:8443
.
This issue resulted from #63 . @trademkose could you work on this?
Hi,
I receive an exeception when i execute "Java -jar kuksa...jar". I have configured the mariadb and created a new database called "appstore". Below are the application.properties entries
I have created a user admin2 with password admin in mariadb server. I have also checked for empty spaces in the properties file.
debug=false
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mariadb://localhost:3306/appstore
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.username=admin2
spring.datasource.password=admin
spring.h2.console.enabled=true
spring.h2.console.path=/console
spring.datasource.initialization-mode=always
spring.jpa.show-sql=true
hawkbit.host= localhost
hawkbit.port= 8080
hawkbit.username= admin
hawkbit.password= admin
appstore.username= admin2
appstore.password= admin
server.port=8082
Here is the exception i get
kuksa@kuksa:~/kuksa-appstore/kuksa.cloud/kuksa.appstore/target$ java -jar kuksa.appstore-0.0.1-SNAPSHOT.jar
2018-10-22 15:26:17.644 INFO 1453 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@52feb982: startup date [Mon Oct 22 15:26:17 CEST 2018]; root of context hierarchy
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1 (jar:file:/home/kuksa/kuksa-appstore/kuksa.cloud/kuksa.appstore/target/kuksa.appstore-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/spring-core-5.0.8.RELEASE.jar!/) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2018-10-22 15:26:18.214 INFO 1453 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$49730185] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )__ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' || .__|| ||| |_, | / / / /
=========||==============|/=////
:: Spring Boot :: (v2.0.4.RELEASE)
2018-10-22 15:26:18.576 INFO 1453 --- [ main] o.e.kuksa.appstore.AppStoreApplication : No active profile set, falling back to default profiles: default
2018-10-22 15:26:18.608 INFO 1453 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@59309333: startup date [Mon Oct 22 15:26:18 CEST 2018]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@52feb982
2018-10-22 15:26:20.244 INFO 1453 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'dataSource' with a different definition: replacing [Root bean: class [null]; scope=refresh; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=false; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari; factoryMethodName=dataSource; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]] with [Root bean: class [org.springframework.aop.scope.ScopedProxyFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in BeanDefinition defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]]
2018-10-22 15:26:20.271 WARN 1453 --- [ main] o.s.c.a.ConfigurationClassPostProcessor : Cannot enhance @configuration bean definition 'com.vaadin.spring.VaadinConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
2018-10-22 15:26:20.511 INFO 1453 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=4453f2db-b1eb-3014-bebb-2928591e446f
2018-10-22 15:26:20.869 INFO 1453 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$2d58fe88] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-10-22 15:26:20.963 INFO 1453 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$49730185] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2018-10-22 15:26:21.616 INFO 1453 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8082 (http)
2018-10-22 15:26:21.665 INFO 1453 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-10-22 15:26:21.666 INFO 1453 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.32
2018-10-22 15:26:21.684 INFO 1453 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
2018-10-22 15:26:21.802 INFO 1453 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-10-22 15:26:21.802 INFO 1453 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3195 ms
2018-10-22 15:26:21.828 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Registering Vaadin servlet
2018-10-22 15:26:21.828 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Servlet will be mapped to URLs [/vaadinServlet/, /VAADIN/]
2018-10-22 15:26:21.887 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Setting servlet init parameters
2018-10-22 15:26:21.888 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Set servlet init parameter [productionMode] = [false]
2018-10-22 15:26:21.890 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Set servlet init parameter [resourceCacheTime] = [3600]
2018-10-22 15:26:21.890 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Set servlet init parameter [heartbeatInterval] = [300]
2018-10-22 15:26:21.890 INFO 1453 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration : Set servlet init parameter [closeIdleSessions] = [false]
2018-10-22 15:26:22.057 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/]
2018-10-22 15:26:22.058 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/]
2018-10-22 15:26:22.058 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/]
2018-10-22 15:26:22.058 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/]
2018-10-22 15:26:22.059 INFO 1453 --- [ost-startStop-1] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/]
2018-10-22 15:26:22.059 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-10-22 15:26:22.062 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet springVaadinServlet mapped to [/vaadinServlet/, /VAADIN/]
2018-10-22 15:26:22.063 INFO 1453 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet webServlet mapped to [/console/]
2018-10-22 15:26:22.325 INFO 1453 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2018-10-22 15:26:22.441 INFO 1453 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2018-10-22 15:26:22.449 INFO 1453 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executing SQL script from URL [jar:file:/home/kuksa/kuksa-appstore/kuksa.cloud/kuksa.appstore/target/kuksa.appstore-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/schema.sql]
2018-10-22 15:26:22.454 INFO 1453 --- [ main] o.s.jdbc.datasource.init.ScriptUtils : Executed SQL script from URL [jar:file:/home/kuksa/kuksa-appstore/kuksa.cloud/kuksa.appstore/target/kuksa.appstore-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/schema.sql] in 5 ms.
2018-10-22 15:26:22.682 INFO 1453 --- [ main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2018-10-22 15:26:22.713 INFO 1453 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [
name: default
...]
2018-10-22 15:26:22.861 INFO 1453 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.17.Final}
2018-10-22 15:26:22.864 INFO 1453 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found
2018-10-22 15:26:22.892 WARN 1453 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
2018-10-22 15:26:22.893 INFO 1453 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2018-10-22 15:26:22.902 INFO 1453 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2018-10-22 15:26:22.903 INFO 1453 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
At the moment, the documentation of the deployment in the respective Readme file describes the different step. But for a user or administrator being new to the project it is cumbersome to figure out which steps are necessary and in which order the steps shall be executed. Because of that it would be great to extend the documentation for the deployment in that direction.
atm. we are testing the process of buying
and installing
manually.
Is it possible to expose those actions on the API?
This would allow us to automate those tests and give more detailed feed-back on possible issues.
Either the documentation or the implementation itself is strange.
The documetnation says that I get the user's installed apps but the code calls
appService.findByNameStartsWithIgnoreCaseAndInstalledusersId("", userId, pageable). This method does not return me the desired user's installed apps. Maybe the structure of this query is not right.
There is a method that can be the right query
findUsersApps(String userId, List oemList, Pageable pageable) but I do not understand the necessary of oemList in this query.
My actions:
1.) Create a user
2.) Create an app category
3.) Create an app
4.) Update app with category
5.) Update user with installed app from 3
6.) Get all installed apps from user from 1
Need to find a way to deploy Traccar server on the kuksa-cloud instance for gathering GPS data from kuksa dongle.
Traccar Server = https://www.traccar.org/server/
There are a few instances of it in the public cloud but would be great to have one only for kuksa.
Each end point which use @PathVariable are not mapped correctly.
The name of url path variable used in @DeleteMapping, @GetMapping and @PutMapping should be the same as the parameter of @PathVariable.
Example:
@GetMapping(value = "/appcategories/{appCategoryId}")
public ResponseEntity<?> getAppCategorybyId(@PathVariable String appCategoryId)
This endpoint should be reached by HTTP POST
Currently, one instance of the HonoInfluxDBConnector runs and stores all data that goes to the "DEFAULT_TENANT". Due to seperation of concerns and to support the storing of Rover telemetry data, an instance should also be configured and run for the "rover" tenant.
When create new app category the api returns a wrong (not expected) http status code.
Should be 201 (CREATED) instead of 200 (OK).
The indexing of the entire database seems to be off.
IDs to Users, Apps, Categories are assigned as follows: 1, 2, 3, 33, 34, 35, 36, 37, 38, 39, 40, 41, 44, 56 ... 117, 127 etc.
Furthermore, IDs for separate entities (Category, OEMs) are not assigend chronologically for each entity, but are interleaved at the point of creation. e.g: Category 1, OEM 2
Apart from that, IDs are never reset, or counted down on removal of any entry. Is this the desired behavior or also a bug?
Please have a look into this
Some of the included demo certificates from https://download.eclipse.org/hono/eclipse-hono-deploy-0.8.tar.gz have expired.
$ openssl x509 -enddate -noout -in hono-demo-certs-jar/auth-server-cert.pem
notAfter=Mar 2 11:32:14 2019 GMT
$ openssl x509 -enddate -noout -in hono-demo-certs-jar/mqtt-adapter-cert.pem
notAfter=Mar 2 11:32:15 2019 GMT
This makes some of the containers deployed using the Hono deploy script fail.
Details:
Problem:
Detailed exception description:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:657) ~[na:1.8.0_171] at java.util.ArrayList.get(ArrayList.java:433) ~[na:1.8.0_171] at org.eclipse.kuksa.appstore.service.AppService.InstallApp(AppService.java:390) ~[classes/:na] at org.eclipse.kuksa.appstore.ui.AppView$1.buttonClick(AppView.java:184) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_171] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171] at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:499) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:273) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:237) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1014) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.ui.Button.fireClick(Button.java:384) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.ui.Button$1.click(Button.java:57) ~[vaadin-server-8.6.0.jar:8.6.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_171] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171] at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:155) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:116) ~[vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:445) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:410) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601) [vaadin-server-8.6.0.jar:8.6.0] at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445) [vaadin-server-8.6.0.jar:8.6.0] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:209) [spring-security-web-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471) [tomcat-embed-core-8.5.32.jar:8.5.32] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.32.jar:8.5.32] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_171] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_171] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.32.jar:8.5.32] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171]
@rohoet noticed that when a Grafana container is restarted, only the Hono dashboard is recreated. Manually added dashboards are lost. Likewise, Influxdb does not retain data between container restarts.
We would like both Grafana and Influxdb to use persistent volume claims to become persistent.
A default dashboard for the Rover should be pre-installed, like the default Hono dashboard.
The current version of the Eclipse Kuksa Cloud contains a deployment of the InfluxDB. This database is part of the deployment of Eclipse Hono. With Eclipse Hono release 0.9-M1 (https://www.eclipse.org/hono/release-notes/), the InfluxDB deployment has been replaced by Prometheus. However, other services in the Eclipse Kuksa Cloud make use of the InfluxDB so we need to add the deployment of the database directly to the Eclipse Kuksa Cloud deployment when updating to a new version of Eclipse Hono.
Hi,
currently this repository lacks any automated tests and checks except the contributor agreement with the Eclipse Foundation. Personally, I would prefer to have at least a compile and unit test pipeline to have a quick feedback on a new pull request. There are plenty of free offers like https://travis-ci.org/ and https://circleci.com/ that could be used.
Pipelines are not necessarily limited to compiling. They could also help checking formatting, build images or run integration tests.
For the moment, I would propose to start with a basic job to make sure sources can be compiled in a certain environment.
In /examples there is the /malfunction-indicator-light folder containing the code for that use case. However, it would be great to have a script or a similar solution to deploy the components of that use case preferably under /deployment. The needed template for the kubernetes descriptors are already present in /examples/malfunction-indicator-light/deploy/kubernetes .
We need to adapt the pom.xml of the app store a bit by adding the license () and a link to the website of Eclipse Kuksa ().
Automatic code analysis tools (e.g. ORT https://github.com/heremaps/oss-review-toolkit) may use the information from the parent pom.xml are. In the case of the app-store this is the information for the spring-boot-starter-parent which has another license (Apache 2.0) and obviously another website.
During BCX we had multiple rovers and the demonstrator send data to InfluxDB via InfluxDBConnector. After a quick analysis it seemed like data was sent to InfluxDB but was not available via the InfluxDB HTTP API in time. There seemed to be a delay after which data became visible.
We should try to reproduce the problem and then analyze it. Could be a configuration issue or maybe an update of InfluxDB would help.
The user with the given id will not be updated with the request body because there is a bug in UserService.
1.) There is no merge with currentUser (user fetched from db) and the parameter userObject (request body).
2.) UserObject (request body) will be saved as new user (see userRepository.save(userObject)).
The newly created user will not have the same id as the given url parameter.
3.) Instead of the currentUser (fetched from db) the user from request body (saved as new user in db) will be returned.
Solution: After validate the userObject (request body) merge the given data to the currentUser (fetched fom db). Then update currentUser ind db and return it from the response.
The scripts and files for the deployment of the Eclipse Kuksa Cloud should contain the option to deploy the Eclipse Kuksa App Store that which is part of the Eclipse Cloud repository.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.