Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Adding Intel Edison support to rhiot CMD
Added device sensor.

Refactoring.

Added device management service to gateway PaaS.

Refactoring.

Improved camera service properties' prefixes.

Improved tests concurrency.

Fixed broken build.

Improved logging.

remove

move to util pkg

Tuning tests logging level.

Added missing test configuration.

javadoc

add javadoc

update

add shutdown call

Delete JavaNetInterfaceProvider.groovy.rej

Kura Cloud consumer should subscribe to cloudClient when starting route #562

Provide single node PaaS packaging #564

PaaS script should automatically choose proper platform packaging #565

PaaS script should automatically choose proper platform packaging #565

Added extra comments.

Adding Intel Edison support to rhiot CMD

Fixing part of parameters initialization

Upgraded Rhiot version in CMD.

Added command abstraction.

Added missing licenses.

Improved CMD arguments handling.

Created InMemoryOutputAppender.

Added missing privileges to CMD.

Closing Spring runtime when command ends.

Make image processor pluggable #548

Removed deprecated tests.

Created after-release script.

Upgraded project version.

Upgraded project version.

Improved formatting.

Fedora uses a new name for wireless lan interfaces. Added a new condition to find these interfaces too.

Organized imports.

Extracted payload conversion logic.

Fixed tests caching logic.

Improved cache API usage.

Refactoring.

Upgraded Spark image release version.

Lock OpenALPR version used in Docker image #556

Lock OpenALPR version used in Docker image #556

Improved RAT rules.

Refactoring.

Added device management service to gateway PaaS.

Improved tests concurrency.

Fixed broken build.

Improved logging.

Tuning tests logging level.

Added missing test configuration.

javadoc

add javadoc

update

add shutdown call

Kura Cloud consumer should subscribe to cloudClient when starting route #562

PaaS script should automatically choose proper platform packaging #565

Added extra comments.

Fixing part of parameters initialization

Delete JavaNetInterfaceProvider.groovy.rej
  • Loading branch information
Ricardo M Oliveira committed Apr 1, 2016
1 parent c438e37 commit 191dee2
Show file tree
Hide file tree
Showing 62 changed files with 883 additions and 160 deletions.
5 changes: 5 additions & 0 deletions bom/pom.xml
Expand Up @@ -401,6 +401,11 @@
<artifactId>rhiot-scanner</artifactId> <artifactId>rhiot-scanner</artifactId>
<version>${rhiot.version}</version> <version>${rhiot.version}</version>
</dependency> </dependency>
<dependency>
<groupId>io.rhiot</groupId>
<artifactId>rhiot-sensor-device</artifactId>
<version>${rhiot.version}</version>
</dependency>
<dependency> <dependency>
<groupId>io.rhiot</groupId> <groupId>io.rhiot</groupId>
<artifactId>rhiot-sensor-camera</artifactId> <artifactId>rhiot-sensor-camera</artifactId>
Expand Down
Expand Up @@ -24,7 +24,7 @@
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.maps.model.LatLng; import com.google.maps.model.LatLng;
import io.rhiot.datastream.document.DocumentStore; import io.rhiot.cloudplatform.service.document.api.DocumentStore;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
Expand All @@ -37,7 +37,6 @@
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;


import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
Expand All @@ -50,8 +49,8 @@
import static com.github.camellabs.iot.cloudlet.geofencing.domain.Route.createNewRoute; import static com.github.camellabs.iot.cloudlet.geofencing.domain.Route.createNewRoute;
import static com.google.common.collect.Lists.newLinkedList; import static com.google.common.collect.Lists.newLinkedList;
import static com.google.common.collect.Maps.newHashMap; import static com.google.common.collect.Maps.newHashMap;
import static io.rhiot.datastream.document.Pojos.collectionName; import static io.rhiot.cloudplatform.service.document.api.Pojos.collectionName;
import static io.rhiot.datastream.document.Pojos.pojoToMap; import static io.rhiot.cloudplatform.service.document.api.Pojos.pojoToMap;
import static java.util.Collections.emptyList; import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList; import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
Expand Down
Expand Up @@ -21,7 +21,7 @@
import com.github.camellabs.iot.cloudlet.geofencing.googlemaps.StaticMaps; import com.github.camellabs.iot.cloudlet.geofencing.googlemaps.StaticMaps;
import com.google.maps.internal.PolylineEncoding; import com.google.maps.internal.PolylineEncoding;
import com.google.maps.model.LatLng; import com.google.maps.model.LatLng;
import io.rhiot.datastream.document.DocumentStore; import io.rhiot.cloudplatform.service.document.api.DocumentStore;
import io.rhiot.mongodb.EmbeddedMongo; import io.rhiot.mongodb.EmbeddedMongo;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
Expand Down Expand Up @@ -51,8 +51,8 @@


import static com.jayway.awaitility.Awaitility.await; import static com.jayway.awaitility.Awaitility.await;
import static com.jayway.awaitility.Duration.ONE_MINUTE; import static com.jayway.awaitility.Duration.ONE_MINUTE;
import static io.rhiot.datastream.document.Pojos.collectionName; import static io.rhiot.cloudplatform.service.document.api.Pojos.collectionName;
import static io.rhiot.datastream.document.Pojos.pojoToMap; import static io.rhiot.cloudplatform.service.document.api.Pojos.pojoToMap;
import static java.lang.Boolean.TRUE; import static java.lang.Boolean.TRUE;
import static java.math.BigDecimal.ONE; import static java.math.BigDecimal.ONE;
import static java.math.BigDecimal.TEN; import static java.math.BigDecimal.TEN;
Expand Down
Expand Up @@ -18,7 +18,7 @@


import com.google.common.net.InetAddresses; import com.google.common.net.InetAddresses;
import io.rhiot.cloudplatform.connector.IoTConnector; import io.rhiot.cloudplatform.connector.IoTConnector;
import org.eclipse.cloudplatform.service.device.api.Device; import io.rhiot.cloudplatform.service.device.api.Device;
import org.eclipse.leshan.LinkObject; import org.eclipse.leshan.LinkObject;
import org.eclipse.leshan.core.request.BindingMode; import org.eclipse.leshan.core.request.BindingMode;
import org.eclipse.leshan.server.client.Client; import org.eclipse.leshan.server.client.Client;
Expand All @@ -33,7 +33,7 @@


import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static org.eclipse.cloudplatform.service.device.api.DeviceConstants.*; import static io.rhiot.cloudplatform.service.device.api.DeviceConstants.*;


public class IoTConnectorClientRegistry implements ClientRegistry { public class IoTConnectorClientRegistry implements ClientRegistry {


Expand Down Expand Up @@ -135,8 +135,8 @@ private static Client deviceToClient(Device device) {
} }


private static Device clientToDevice(Client client) { private static Device clientToDevice(Client client) {
List<org.eclipse.cloudplatform.service.device.api.LinkObject> linkObjects = asList(client.getObjectLinks()).stream().map( List<io.rhiot.cloudplatform.service.device.api.LinkObject> linkObjects = asList(client.getObjectLinks()).stream().map(
link -> new org.eclipse.cloudplatform.service.device.api.LinkObject( link -> new io.rhiot.cloudplatform.service.device.api.LinkObject(
link.getUrl(), link.getAttributes(), link.getObjectId(), link.getObjectInstanceId(), link.getResourceId() link.getUrl(), link.getAttributes(), link.getObjectId(), link.getObjectInstanceId(), link.getResourceId()
) )
).collect(toList()); ).collect(toList());
Expand Down
Expand Up @@ -16,7 +16,7 @@
*/ */
package io.rhiot.cloudplatform.adapter.leshan; package io.rhiot.cloudplatform.adapter.leshan;


import org.eclipse.cloudplatform.service.device.api.DeviceMetricsPollService; import io.rhiot.cloudplatform.service.device.api.DeviceMetricsPollService;
import org.eclipse.leshan.core.node.LwM2mResource; import org.eclipse.leshan.core.node.LwM2mResource;
import org.eclipse.leshan.core.request.ReadRequest; import org.eclipse.leshan.core.request.ReadRequest;
import org.eclipse.leshan.core.response.ValueResponse; import org.eclipse.leshan.core.response.ValueResponse;
Expand Down
Expand Up @@ -16,7 +16,7 @@
*/ */
package io.rhiot.cloudplatform.adapter.leshan; package io.rhiot.cloudplatform.adapter.leshan;


import org.eclipse.cloudplatform.service.device.api.DeviceMetrics; import io.rhiot.cloudplatform.service.device.api.DeviceMetrics;


public class Lwm2mMetricResolver implements MetricResolver { public class Lwm2mMetricResolver implements MetricResolver {


Expand Down
Expand Up @@ -20,8 +20,8 @@
import io.rhiot.cloudplatform.runtime.spring.test.CloudPlatformTest; import io.rhiot.cloudplatform.runtime.spring.test.CloudPlatformTest;
import io.rhiot.utils.leshan.client.LeshanClientTemplate; import io.rhiot.utils.leshan.client.LeshanClientTemplate;
import io.rhiot.utils.leshan.client.UpdateRequestBuilder; import io.rhiot.utils.leshan.client.UpdateRequestBuilder;
import org.eclipse.cloudplatform.service.device.api.Device; import io.rhiot.cloudplatform.service.device.api.Device;
import org.eclipse.cloudplatform.service.device.api.DeviceMetrics; import io.rhiot.cloudplatform.service.device.api.DeviceMetrics;
import org.junit.After; import org.junit.After;
import org.junit.Test; import org.junit.Test;


Expand All @@ -31,7 +31,7 @@
import static io.rhiot.utils.Networks.findAvailableTcpPort; import static io.rhiot.utils.Networks.findAvailableTcpPort;
import static io.rhiot.utils.leshan.client.LeshanClientTemplate.createVirtualLeshanClientTemplate; import static io.rhiot.utils.leshan.client.LeshanClientTemplate.createVirtualLeshanClientTemplate;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
import static org.eclipse.cloudplatform.service.device.api.DeviceConstants.*; import static io.rhiot.cloudplatform.service.device.api.DeviceConstants.*;


public class LeshanProtocolAdapterConfigurationTest extends CloudPlatformTest { public class LeshanProtocolAdapterConfigurationTest extends CloudPlatformTest {


Expand Down
119 changes: 72 additions & 47 deletions cloudplatform/install/rhiot-cloud-platform
Expand Up @@ -70,6 +70,11 @@ if [ -z "${CONTAINERS_LOG_LEVEL}" ]; then
CONTAINERS_LOG_LEVEL="INFO" CONTAINERS_LOG_LEVEL="INFO"
fi fi


if [ -z "${CONTAINERS_NUMBER}" ]; then
MEMTOTAL=`free | grep Mem | awk '{ print $2 }'`
CONTAINERS_NUMBER=`expr $MEMTOTAL / 1024 / 1024 + 1`
fi

PAAS_LOG=$RHIOT_HOME/rcp.log PAAS_LOG=$RHIOT_HOME/rcp.log
REQUIRED_DOCKER_VERSION=1.8.2 REQUIRED_DOCKER_VERSION=1.8.2


Expand All @@ -79,6 +84,13 @@ if [ ! -d ${RHIOT_HOME} ]; then
log_info "Creating Rhiot home directory at ${RHIOT_HOME} ..." log_info "Creating Rhiot home directory at ${RHIOT_HOME} ..."
fi fi


# Exporting host environment variables

ENV="-e "`env | grep -v ' ' | sed ':a;N;$!ba;s/\n/ -e /g'`

exe docker pull rhiot/paas-bootstrap:${RHIOT_VERSION}
CONTAINERS_NUMBER=`docker run ${ENV} rhiot/paas-bootstrap:${RHIOT_VERSION}`

log_info "Starting Rhiot Cloud Platform" log_info "Starting Rhiot Cloud Platform"


### Docker boot init ### Docker boot init
Expand Down Expand Up @@ -119,7 +131,7 @@ if [ $(docker ps | wc -l) -gt 1 ]; then
fi fi


log_info "Removing old containers..." log_info "Removing old containers..."
exe docker rm -f mongodb AMQP_SERVICE_HOST paas-adapters paas-services spark_master spark_worker exe docker rm -f mongodb AMQP_SERVICE_HOST paas-single paas-adapters paas-services spark_master spark_worker


### MongoDB ### MongoDB
log_info "MongoDB" log_info "MongoDB"
Expand All @@ -130,52 +142,65 @@ fi
exe docker run -d --volumes-from mongodb_data --name mongodb -p 27017:27017 mongo exe docker run -d --volumes-from mongodb_data --name mongodb -p 27017:27017 mongo
log_info "MongoDB started" log_info "MongoDB started"


### IoT Connector if [ $CONTAINERS_NUMBER -gt 2 ]; then


log_info "ActiveMQ" ### IoT Connector
exe docker pull rhiot/activemq:${RHIOT_VERSION}
exe docker run -d --name AMQP_SERVICE_HOST \ log_info "ActiveMQ"
-e spring_activemq_broker_enabled=true -e spring_activemq_broker_amqpEnabled=true -e spring_activemq_broker_websocketEnabled=true \ exe docker pull rhiot/activemq:${RHIOT_VERSION}
-p 5672:5672 -p 9090:9090 \ exe docker run -d --name AMQP_SERVICE_HOST \
-t rhiot/activemq:${RHIOT_VERSION} -e spring_activemq_broker_enabled=true -e spring_activemq_broker_amqpEnabled=true -e spring_activemq_broker_websocketEnabled=true \
log_info "ActiveMQ started" -p 5672:5672 -p 9090:9090 \

-t rhiot/activemq:${RHIOT_VERSION}
### Protocol adapters log_info "ActiveMQ started"


log_info "Starting protocol adapters..." ### Protocol adapters
exe docker pull rhiot/paas-adapters:${RHIOT_VERSION}
exe docker run -d --name paas-adapters --net=host -t rhiot/paas-adapters:${RHIOT_VERSION} log_info "Starting protocol adapters..."
log_info "Protocol adapters started." exe docker pull rhiot/paas-adapters:${RHIOT_VERSION}

exe docker run -d --name paas-adapters --net=host -t rhiot/paas-adapters:${RHIOT_VERSION}
### Services log_info "Protocol adapters started."


log_info "Starting services..." ### Services
exe docker pull rhiot/paas-services:${RHIOT_VERSION}
exe docker run -d --name paas-services \ log_info "Starting services..."
--privileged -v /var/run/docker.sock:/run/docker.sock -v /tmp/openalpr-workdir:/tmp/openalpr-workdir \ exe docker pull rhiot/paas-services:${RHIOT_VERSION}
-v /var/rhiot/pass/binary:/tmp/rhiot/binary \ exe docker run -d --name paas-services \
-e logging.level.root=${CONTAINERS_LOG_LEVEL} \ --privileged -v /var/run/docker.sock:/run/docker.sock -v /tmp/openalpr-workdir:/tmp/openalpr-workdir \
--link AMQP_SERVICE_HOST:AMQP_SERVICE_HOST -e AMQP_SERVICE_HOST=AMQP_SERVICE_HOST \ -v /var/rhiot/pass/binary:/tmp/rhiot/binary \
--link mongodb:mongodb \ -e logging.level.root=${CONTAINERS_LOG_LEVEL} \
-t rhiot/paas-services:${RHIOT_VERSION} --link AMQP_SERVICE_HOST:AMQP_SERVICE_HOST -e AMQP_SERVICE_HOST=AMQP_SERVICE_HOST \
log_info "Services started." --link mongodb:mongodb \

-t rhiot/paas-services:${RHIOT_VERSION}
### Spark standalone cluster log_info "Services started."


if [ "${SPARK_ENABLED}" != 'false' ]; then ### Spark standalone cluster


log_info "Spark" if [ "${SPARK_ENABLED}" != 'false' ]; then
exe docker pull rhiot/spark-standalone:${RHIOT_VERSION}
exe docker run -d --name spark_master -p 8081:8080 -P -t rhiot/spark-standalone:${RHIOT_VERSION} /start-master.sh "$@" log_info "Spark"
sleep 5 exe docker pull rhiot/spark-standalone:${RHIOT_VERSION}
SPARK_MASTER_SERVICE_HOST=`docker inspect spark_master | grep IPAddress\": | cut -d '"' -f 4 | uniq` exe docker run -d --name spark_master -p 8081:8080 -P -t rhiot/spark-standalone:${RHIOT_VERSION} /start-master.sh "$@"
log_info "Spark master started" sleep 5

SPARK_MASTER_SERVICE_HOST=`docker inspect spark_master | grep IPAddress\": | cut -d '"' -f 4 | uniq`
exe docker run -d --name spark_worker \ log_info "Spark master started"
--link spark_master:spark_master --link AMQP_SERVICE_HOST:AMQP_SERVICE_HOST -e SPARK_MASTER_SERVICE_HOST=${SPARK_MASTER_SERVICE_HOST} \
-v /tmp/jobs:/tmp/jobs -P \ exe docker run -d --name spark_worker \
-t rhiot/spark-standalone:${RHIOT_VERSION} /start-worker.sh --link spark_master:spark_master --link AMQP_SERVICE_HOST:AMQP_SERVICE_HOST -e SPARK_MASTER_SERVICE_HOST=${SPARK_MASTER_SERVICE_HOST} \
log_info "Spark worker started" -v /tmp/jobs:/tmp/jobs -P \
-t rhiot/spark-standalone:${RHIOT_VERSION} /start-worker.sh
log_info "Spark worker started"

fi

else

### Single node Cloud PaaS

log_info "Starting single node Cloud PaaS..."
exe docker pull rhiot/paas-single:${RHIOT_VERSION}
exe docker run -d --name paas-single --net=host -t rhiot/paas-single:${RHIOT_VERSION}
log_info "Single node Cloud PaaS started."


fi fi


Expand Down
2 changes: 1 addition & 1 deletion cloudplatform/paas/adapters/pom.xml
Expand Up @@ -5,7 +5,7 @@


<parent> <parent>
<groupId>io.rhiot</groupId> <groupId>io.rhiot</groupId>
<artifactId>rhiot-cloudplatform-paas</artifactId> <artifactId>rhiot-cloud-paas</artifactId>
<version>0.1.5-SNAPSHOT</version> <version>0.1.5-SNAPSHOT</version>
<relativePath>..</relativePath> <relativePath>..</relativePath>
</parent> </parent>
Expand Down
Expand Up @@ -18,14 +18,14 @@ package io.rhiot.datastream.node


import io.rhiot.cloudplatform.runtime.spring.test.CloudPlatformTest import io.rhiot.cloudplatform.runtime.spring.test.CloudPlatformTest
import io.rhiot.utils.leshan.client.LeshanClientTemplate import io.rhiot.utils.leshan.client.LeshanClientTemplate
import org.eclipse.cloudplatform.service.device.api.Device import io.rhiot.cloudplatform.service.device.api.Device
import org.junit.Test import org.junit.Test
import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Configuration
import org.springframework.web.client.RestTemplate import org.springframework.web.client.RestTemplate


import static com.google.common.truth.Truth.assertThat import static com.google.common.truth.Truth.assertThat
import static io.rhiot.utils.Uuids.uuid import static io.rhiot.utils.Uuids.uuid
import static org.eclipse.cloudplatform.service.device.api.DeviceConstants.* import static io.rhiot.cloudplatform.service.device.api.DeviceConstants.*


@Configuration @Configuration
class PaaSProtocolAdaptersTest extends CloudPlatformTest { class PaaSProtocolAdaptersTest extends CloudPlatformTest {
Expand Down
63 changes: 63 additions & 0 deletions cloudplatform/paas/bootstrap/pom.xml
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.rhiot</groupId>
<artifactId>rhiot-cloud-paas</artifactId>
<version>0.1.5-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<name>Rhiot :: Cloud platform :: PaaS :: Bootstrap</name>
<artifactId>rhiot-cloudplatform-paas-bootstrap</artifactId>

<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>

<properties>
<docker.image.target>paas-bootstrap</docker.image.target>
<fatjar.mainClass>io.rhiot.cloud.paas.bootstrap.Bootstrap</fatjar.mainClass>
</properties>

<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>io.rhiot</groupId>
<artifactId>rhiot-utils</artifactId>
</dependency>

<!-- Testing -->
<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.jolokia</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

0 comments on commit 191dee2

Please sign in to comment.