Example - Managing Snaps on Ubuntu-Core Devices

EdgeIQ provides robust capabilities for managing devices and their applications using Snap packages. This guide will help you use HTTP Sender type commands to manage Snaps on Ubuntu-Core based devices.

The EdgeIQ CODA is able to manage snaps on the device using Snapd REST API provided by Ubuntu Core.

Prerequisites

  1. You are using custom build CODA snap
  2. snapd-control plug must be connected to CODA snap to get access to /run/snapd.socket

Setting Up HTTP Sender Type Command

For doing you need to create User-Defined device commands on the Platform

Key Fields for HTTP Sender

Field Descriptions:

  • url: The full URI or URL of the endpoint. Please refer to the complete Snapd specification.
  • method: The HTTP method to be used. Only POST and PUT are supported for some operations; GET is also supported for retrieval operations.
    • Example: POST
    • Example: GET
  • headers: HTTP request headers as key-value pairs. Common headers include Content-Type and Accept.
{
  "Content-Type": "application/json",
  "Accept": "application/json"
}
  • unix-socket: Path to the Unix socket file which is used as transport of the HTTP client. In this example it should be path to snapd socket.
    • Example: /run/snapd.socket
  • timeout: (Optional) Timeout in seconds before returning with an error. Default value is 30 seconds.
    • Example: 5

Example: Listing Installed Snaps

This command allow to see list of the all installed applications (snaps) on the device.

The same as snap list cli command. API Ref: GET /v2/apps

Command Configuration

{
  "name": "List Installed Snaps",
  "sender_type": "http_sender",
  "description": "Command to list all installed Snaps on an Ubuntu Core device using Snap API.",
  "sender": {
    "method": "GET",
    "unix_socket": "/run/snapd.socket",
    "url": "http://localhost/v2/apps"
  },
  "options": {}
}

Example: Installing Hello Snap

This command allows to installs hello snap on the device.

API Ref: POST /v2/snaps

Command Configuration

{
  "name": "Install Hello Snap",
  "sender_type": "http_sender",
  "description": "This command installs the Hello Snap on the device.",
  "sender": {
    "method": "POST",
    "headers": {
      "Accept": "application/json",
      "Content-Type": "application/json"
    },
    "unix_socket": "/run/snapd.socket",
    "url": "http://localhost/v2/snaps/hello"
  },
  "payload": {
    "action": "install",
    "channel": "stable"
  },
  "options": {}
}

Example: Remove Hello Snap

This command allows to remove snap from the device.

API Ref: POST /v2/snaps

Command Configuration

{
  "name": "Remove Hello Snap",
  "sender_type": "http_sender",
  "description": "This command removes the Hello Snap from the device.",
  "sender": {
    "method": "POST",
    "headers": {
      "Accept": "application/json",
      "Content-Type": "application/json"
    },
    "unix_socket": "/run/snapd.socket",
    "url": "http://localhost/v2/snaps/hello"
  },
  "payload": {
    "action": "remove"
  },
  "options": {}
}