Commit bb58b693 authored by Fotis Soldatos's avatar Fotis Soldatos
Browse files

Merge branch 'feat/add-ztpAdd-bind-and-serializer' into 'develop'

Feat/add ztp add bind and serializer

See merge request teraflow-h2020/controller!82
parents bab100e1 e2582d02
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@

  <groupId>eu.teraflow</groupId>
  <artifactId>automation</artifactId>
  <version>0.1.0</version>
  <version>0.2.0</version>
  <name>TeraFlow Automation Component</name>
  <description>TeraFlow Automation Component</description>

+20 −11
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@ package eu.teraflow.automation;

import automation.Automation;
import context.ContextOuterClass;
import eu.teraflow.automation.device.model.Device;
import eu.teraflow.automation.model.DeviceRoleId;
import io.quarkus.grpc.GrpcService;
import io.smallrye.mutiny.Uni;
import javax.inject.Inject;
@@ -32,18 +34,13 @@ public class AutomationGatewayImpl implements AutomationGateway {

    @Override
    public Uni<Automation.DeviceRoleState> ztpAdd(Automation.DeviceRole request) {
        final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid();
        final var deviceId = serializer.deserialize(request.getDevRoleId().getDevId());

        // TODO tie this with return
        automationService.addDevice(deviceId);

        // TODO Set all fields of device role state (create models, serializer)
        return Uni.createFrom()
                .item(
                        () ->
                                Automation.DeviceRoleState.newBuilder()
                                        .setDevRoleId(request.getDevRoleId())
                                        .build());
        return automationService
                .addDevice(deviceId)
                .onItem()
                .transform( device -> transformToDeviceRoleState(device, devRoleId));
    }

    @Override
@@ -70,4 +67,16 @@ public class AutomationGatewayImpl implements AutomationGateway {
    public Uni<Automation.DeviceDeletionResult> ztpDeleteAll(Automation.Empty empty) {
        return Uni.createFrom().item(() -> Automation.DeviceDeletionResult.newBuilder().build());
    }

    // TODO When `DeviceRoleState` domain object will be created, move this method to Serializer class and create related tests
    private Automation.DeviceRoleState transformToDeviceRoleState(Device device, String devRoleId){

        final var deviceRoleId = new DeviceRoleId(devRoleId, device.getDeviceId());
        final var serializeDeviceRoleId = serializer.serialize(deviceRoleId);

        return Automation.DeviceRoleState.newBuilder()
                .setDevRoleId(serializeDeviceRoleId)
                .setDevRoleState(Automation.ZtpDeviceState.ZTP_DEV_STATE_CREATED)
                .build();
    }
}
 No newline at end of file
+88 −5
Original line number Diff line number Diff line
package eu.teraflow.automation;

import automation.Automation;
import context.ContextOuterClass;
import context.ContextOuterClass.DeviceId;
import context.ContextOuterClass.DeviceOperationalStatusEnum;
@@ -12,20 +13,98 @@ import eu.teraflow.automation.device.model.Device;
import eu.teraflow.automation.device.model.DeviceConfig;
import eu.teraflow.automation.device.model.DeviceEvent;
import eu.teraflow.automation.device.model.DeviceOperationalStatus;
import eu.teraflow.automation.model.DeviceRole;
import eu.teraflow.automation.model.DeviceRoleId;
import eu.teraflow.automation.model.DeviceRoleType;
import java.util.stream.Collectors;
import javax.inject.Singleton;

@Singleton
public class Serializer {

    public DeviceId serializeDeviceId(String expectedDeviceId) {
        final var builder = DeviceId.newBuilder();
        final var uuid = serializeUuid(expectedDeviceId);

        builder.setDeviceUuid(uuid);

        return builder.build();
    }

    public String deserialize(DeviceId deviceId) {
        return deviceId.getDeviceUuid().getUuid();
    }

    public DeviceId serializeDeviceId(String expectedDeviceId) {
        final var uuid = Uuid.newBuilder().setUuid(expectedDeviceId).build();
    public Automation.DeviceRoleId serialize(DeviceRoleId deviceRoleId) {
        final var builder = Automation.DeviceRoleId.newBuilder();

        final var deviceRoleDevRoleId = deviceRoleId.getId();
        final var deviceRoleDeviceId = deviceRoleId.getDeviceId();

        final var deviceRoleDevRoleIdUuid = serializeUuid(deviceRoleDevRoleId);
        final var deviceRoleDeviceIdUuid = serializeUuid(deviceRoleDeviceId);

        final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceRoleDeviceIdUuid);

        builder.setDevRoleId(deviceRoleDevRoleIdUuid);
        builder.setDevId(deviceId);

        return builder.build();
    }

    public DeviceRoleId deserialize(Automation.DeviceRoleId deviceRoleId) {
        final var devRoleId = deserialize(deviceRoleId.getDevRoleId());
        final var devId = deserialize(deviceRoleId.getDevId());

        return new DeviceRoleId(devRoleId, devId);
    }

    public Automation.DeviceRoleType serialize(DeviceRoleType deviceRoleType) {
        switch (deviceRoleType) {
            case NONE:
                return Automation.DeviceRoleType.NONE;
            case DEV_OPS:
                return Automation.DeviceRoleType.DEV_OPS;
            case DEV_CONF:
                return Automation.DeviceRoleType.DEV_CONF;
            case PIPELINE_CONF:
                return Automation.DeviceRoleType.PIPELINE_CONF;
            default:
                return Automation.DeviceRoleType.UNRECOGNIZED;
        }
    }

    public DeviceRoleType deserialize(Automation.DeviceRoleType serializedDeviceRoleType) {
        switch (serializedDeviceRoleType) {
            case DEV_OPS:
                return DeviceRoleType.DEV_OPS;
            case DEV_CONF:
                return DeviceRoleType.DEV_CONF;
            case PIPELINE_CONF:
                return DeviceRoleType.PIPELINE_CONF;
            case NONE:
            case UNRECOGNIZED:
            default:
                return DeviceRoleType.NONE;
        }
    }

    public Automation.DeviceRole serialize(DeviceRole deviceRole) {
        final var builder = Automation.DeviceRole.newBuilder();
        final var serializedDeviceRoleId = serialize(deviceRole.getDeviceRoleId());
        final var serializedDeviceRoleType = serialize(deviceRole.getType());

        builder.setDevRoleId(serializedDeviceRoleId);
        builder.setDevRoleType(serializedDeviceRoleType);

        return builder.build();
    }

    public DeviceRole deserialize(Automation.DeviceRole deviceRole) {
        final var deviceRoleId = deserialize(deviceRole.getDevRoleId());
        final var deviceRoleType = deserialize(deviceRole.getDevRoleType());

        return ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuid).build();
        return new DeviceRole(deviceRoleId, deviceRoleType);
    }

    public ContextOuterClass.EventTypeEnum serialize(EventTypeEnum eventTypeEnum) {
@@ -77,8 +156,10 @@ public class Serializer {

    public ContextOuterClass.DeviceEvent serialize(DeviceEvent deviceEvent) {
        final var builder = ContextOuterClass.DeviceEvent.newBuilder();
        final var deviceIdUuid = serializeUuid(deviceEvent.getDeviceId());
        final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceIdUuid);

        builder.setDeviceId(serializeDeviceId(deviceEvent.getDeviceId()));
        builder.setDeviceId(deviceId);
        builder.setEvent(serialize(deviceEvent.getEvent()));

        return builder.build();
@@ -180,8 +261,10 @@ public class Serializer {

    public ContextOuterClass.Device serialize(Device device) {
        final var builder = ContextOuterClass.Device.newBuilder();
        final var deviceIdUuid = serializeUuid(device.getDeviceId());
        final var deviceId = DeviceId.newBuilder().setDeviceUuid(deviceIdUuid);

        builder.setDeviceId(serializeDeviceId(device.getDeviceId()));
        builder.setDeviceId(deviceId);
        builder.setDeviceType(device.getDeviceType());
        builder.setDeviceConfig(serialize(device.getDeviceConfig()));
        builder.setDeviceOperationalStatus(serialize(device.getDeviceOperationalStatus()));
+1 −0
Original line number Diff line number Diff line
package eu.teraflow.automation.device;

import context.ContextOuterClass;
import device.DeviceService;
import eu.teraflow.automation.Serializer;
import eu.teraflow.automation.device.model.Device;
+0 −21
Original line number Diff line number Diff line
package eu.teraflow.automation.model;

public class DeviceRoleState {

    private final DeviceRoleId deviceRoleId;
    private final DeviceState deviceState;

    public DeviceRoleState(DeviceRoleId deviceRoleId, DeviceState deviceState) {

        this.deviceRoleId = deviceRoleId;
        this.deviceState = deviceState;
    }

    public DeviceRoleId getDeviceRoleId() {
        return deviceRoleId;
    }

    public DeviceState getDeviceState() {
        return deviceState;
    }
}
Loading