Skip to content

Commit

Permalink
Introduce new, Hugo templates based, website (#713)
Browse files Browse the repository at this point in the history
* Add new hugo-based website for hawkBit

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Fix broken links + wordings
- , i.e. -> i.e,
- , e.g. -> e.g.,
- hawkbit -> hawkBit
- don't -> do not
- isn't -> is not

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Remove old documentation and add maven integration

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Add Intellij files to ignore

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Update README

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Update Copyright header
* exclude website artifacts

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Harmonize usage of i.e. and e.g.

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Add remark for windows user

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Fix indention

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Introduce review findings

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>

* Change image in 'run hawkbit' guide

Signed-off-by: Jeroen Laverman <jeroen.laverman@bosch-si.com>
  • Loading branch information
Jeroen Laverman authored and Dominic Schabel committed Aug 1, 2018
1 parent fa751c3 commit f96876a
Show file tree
Hide file tree
Showing 145 changed files with 1,543 additions and 5,832 deletions.
10 changes: 10 additions & 0 deletions .gitignore
Expand Up @@ -11,6 +11,7 @@ target
.springbeans
.metadata
.project
.idea

# Windows image file caches
Thumbs.db
Expand Down Expand Up @@ -50,8 +51,17 @@ classpath-data.json
# Eclipse IDE
*.pydevproject

# Intellij
*.iml

# Maven
maven.properties

# Test Files
*.tmp

# Documentation
docs/themes/**
docs/public/**
docs/content/rest-api/*.html
.gitmodules
30 changes: 16 additions & 14 deletions docs/README.md
@@ -1,23 +1,25 @@
# Eclipse hawkBit Documentation
The hawkBit documentation is built with [Hugo](https://www.gohugo.io/) using the [Material](http://github.com/digitalcraftsman/hugo-material-docs)
theme. Compiling the documentation is not included within the regular Maven build.

The hawkBit documentation is based on [Jekyll](http://jekyllrb.com/). Jekyll is a Ruby gem and thus requires a Ruby runtime to be executed. Compiling the documentation is not included within the regular Maven build.
## Prerequisites
1. **Install Hugo**: see [installing Hugo](https://gohugo.io/getting-started/installing/) documentation on how to install Hugo.
2. **Install hawkBit**: run `mvn install` in the parent directory to generate the latest REST docs for hawkBit.

## Build and Serve documentation

### Unix / Mac

On a unix or mac you don't need to extra install Jekyll. The Maven build is downloading the ruby runtime and the necessary ruby-gems via the Maven rubygems-proxy repository. The Ruby runtime is downloaded into the `target` folder and executed during the build.

To serve the current documentation you only need to call `mvn install gem:exec@jekyll-serve` (within the `docs` folder). It automatically monitors the filesystem and every local changes are generated on-demand on the local server [http://127.0.0.1:4000/hawkbit/](http://127.0.0.1:4000/hawkbit/).

### Windows
## Build and Serve documentation
The following Maven targets are available in order to build and serve the documentation:

On a Windows operating system you'll need to install Jekyll manually. If you don't have installed Jekyll on your machine you can use the [PortableJekyll](https://github.com/madhur/PortableJekyll) project. Just clone the Github repository and start the `setpath.cmd` which setups the necessary path entries into the CMD (don't forget to copy them into the environment path variable to have the path set for every command prompt).
* `mvn install`: _i._ Copies the generated REST docs to `content/rest-api/` and _ii._ downloads the required Hugo theme
* `mvn site`: Serve the documentation on [localhost:1313/hawkbit/](localhost:1313/hawkbit/)
* `mvn clean`: Delete generated artifacts (REST docs, Hugo theme)

The Maven build on windows just executes the `Jekyll` process using the maven-exec plugin. This allows to use Maven to build and serve the documentation on a windows machine as well.
_Note: Currently, **only** Unix/macOS is supported! For Windows, use the hugo commands in CMD._

To serve the current documentation you only need to call `mvn exec:exec@jekyll-serve`. It automatically monitors the filesystem and every local changes are generated on-demand on the local server [http://127.0.0.1:4000/hawkbit/](http://127.0.0.1:4000/hawkbit/).

## Test API docs integration
## Generate /public folder
In order to generate the `/public` folder, which can be put on a web-server, run the following command:

In order to verify the hawkbit-rest-docs integration you have to run the serve command above and when running call `mvn install`in parallel to include the generated rest docs into the serve run.
```bash
$ hugo
```
25 changes: 25 additions & 0 deletions docs/cleanup.sh
@@ -0,0 +1,25 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#

# This script is used to clean up the previously generated or downloaded files.

#!/bin/bash


echo "[INFO] Remove Hugo Theme"
rm -rf themes resources public
echo "[INFO] ... done"

echo "[INFO] "

echo "[INFO] Remove generated REST docs"
rm -f content/rest-api/*.html
echo "[INFO] ... done"


107 changes: 107 additions & 0 deletions docs/config.toml
@@ -0,0 +1,107 @@
#
# Copyright (c) 2018 Bosch Software Innovations GmbH and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#

baseurl = "https://www.eclipse.org/hawkbit/"
languageCode = "en-us"
title = "Eclipse hawkBit"
theme = "hugo-material-docs"
metadataformat = "toml"
canonifyurls = false

[params]
# General information
author = "The Eclipse hawkBit Project"
description = "IoT. Update. Device."
copyright = "The Eclipse hawkBit Project"
logo = "images/hawkbit_icon.png"
favicon = "images/favicon.ico"

# Repository
provider = "GitHub"
repo_url = "https://github.com/eclipse/hawkbit"

permalink = "#"

# Custom assets
custom_css = ["css/hawkbit.css","//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css"]
custom_js = []

# Syntax highlighting theme
highlight_css = ""

[params.palette]
primary = "deep-purple"
accent = "light-green"

[params.font]
text = "Ubuntu"
code = "Ubuntu Mono"


[social]
github = "eclipse/hawkbit"
gitter = "eclipse/hawkbit"
docker = "hawkbit"


[[menu.main]]
name = "What is hawkBit"
url = "/whatishawkbit/"
weight = 10

[[menu.main]]
name = "Getting started"
url = "/gettingstarted/"
weight = 20

[[menu.main]]
name = "Guides"
url = "/guides/"
weight = 30

[[menu.main]]
name = "Features"
url = "/features/"
weight = 40

[[menu.main]]
name = "Concepts"
url = "/concepts/"
weight = 50

[[menu.main]]
name = "Architecture"
url = "/architecture/"
weight = 60

[[menu.main]]
name = "Management UI"
url = "/ui/"
weight = 70

[[menu.main]]
name = "APIs"
url = "/apis/"
weight = 80

[[menu.main]]
name = "Community"
url = "/community/"
weight = 90

[[menu.main]]
name = "Release Notes"
url = "/release-notes/"
weight = 100

[blackfriday]
smartypants = true
fractions = true
smartDashes = true
plainIDAnchors = true
@@ -1,33 +1,33 @@
---
layout: documentation
title: DDI-API
title: Direct Device Integration API
parent: APIs
weight: 82
---

{% include base.html %}

This API is based on HTTP standards and based on a polling mechanism.

The _hawkbit_ [update server](https://github.com/eclipse/hawkbit) provides REST resources which are consumed by the device to retrieve software update tasks.
The hawkBit [update server](https://github.com/eclipse/hawkbit) provides REST resources which are consumed by the device to retrieve software update tasks.

Note: in DDI the target is identified using a **controllerId**. Controller is used as a term for the actual service/client on the device. That allows users to have in some cases even multiple clients on the same target for different tasks, e.g. Firmware update and App management.
{{% note %}}
In DDI the target is identified using a **controllerId**. Controller is used as a term for the actual service/client on the device. That allows users to have in some cases even multiple clients on the same target for different tasks, e.g. Firmware update and App management.
{{% /note %}}

# State Machine Mapping
## State Machine Mapping

For historical reasons the DDI has a different state machine and status messages than the [Target State Machine](../architecture/targetstate.html) of the _hawkBit_ update server.
For historical reasons the DDI has a different state machine and status messages than the [Target State Machine](../../concepts/targetstate/) of the hawkBit update server.

This is kept in order to ensure that _DDI_ stays compatible for devices out there in the field. A future version "2" of _DDI_ might change that. _DDI_ also defines more states than the update server, e.g. multiple DDI states are currently mapped by the _DDI_ implementation to _RUNNING_ state. It is possible that in the future _hawkBit_ will fully leverage these additional states.
This is kept in order to ensure that _DDI_ stays compatible for devices out there in the field. A future version "2" of _DDI_ might change that. _DDI_ also defines more states than the update server, e.g. multiple DDI states are currently mapped by the _DDI_ implementation to _RUNNING_ state. It is possible that in the future hawkBit will fully leverage these additional states.

The _DDI_ API allows the device to provide the following feedback messages:

DDI `status.execution` type | handling by update server | Mapped ActionStatus type
--------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -----------------------------------------------------
CANCELED | This is send by the target as confirmation of a cancelation request by the update server. | CANCELED
REJECTED | This is send by the target in case an update of a cancelation is rejected, i.e. cannot be fulfilled at this point in time. Note: the target should send a CLOSED->ERROR if it believes it will not be able to proceed the action at all. | WARNING
CANCELED | This is send by the target as confirmation of a cancellation request by the update server. | CANCELED
REJECTED | This is send by the target in case an update of a cancellation is rejected, i.e. cannot be fulfilled at this point in time. Note: the target should send a CLOSED->ERROR if it believes it will not be able to proceed the action at all. | WARNING
CLOSED | Target completes the action either with `status.result.finished` SUCCESS or FAILURE as result. Note: DDI defines also a status NONE which will not be interpreted by the update server and handled like SUCCESS. | ERROR (DDI FAILURE) or FINISHED (DDI SUCCESS or NONE)
PROCEEDING | This can be used by the target to inform that it is working on the action. | RUNNING
SCHEDULED | This can be used by the target to inform that it scheduled on the action. | RUNNING
RESUMED | This can be used by the target to inform that it continued to work on the action. | RUNNING

# Resource Overview

<iframe src="../../rest-api/rootcontroller-api-guide.html"></iframe>
<iframe width="100%" height="800px" frameborder="0" src="../../rest-api/rootcontroller-api-guide/"></iframe>

0 comments on commit f96876a

Please sign in to comment.