Skip to content

Commit

Permalink
add mosquitto mqtt
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianliechti committed Aug 29, 2022
1 parent 106df42 commit 7b392f2
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
2 changes: 2 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"github.com/adrianliechti/devkit/pkg/catalog/mariadb"
"github.com/adrianliechti/devkit/pkg/catalog/minio"
"github.com/adrianliechti/devkit/pkg/catalog/mongodb"
"github.com/adrianliechti/devkit/pkg/catalog/mosquitto"
"github.com/adrianliechti/devkit/pkg/catalog/mssql"
"github.com/adrianliechti/devkit/pkg/catalog/mysql"
"github.com/adrianliechti/devkit/pkg/catalog/nats"
Expand Down Expand Up @@ -90,6 +91,7 @@ func initApp() cli.App {
catalog.Command(&mariadb.Manager{}),
catalog.Command(&minio.Manager{}),
catalog.Command(&mongodb.Manager{}),
catalog.Command(&mosquitto.Manager{}),
catalog.Command(&mssql.Manager{}),
catalog.Command(&mysql.Manager{}),
catalog.Command(&nats.Manager{}),
Expand Down
84 changes: 84 additions & 0 deletions pkg/catalog/mosquitto/mosquitto.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package mosquitto

import (
"fmt"

"github.com/adrianliechti/devkit/pkg/catalog"
"github.com/adrianliechti/devkit/pkg/engine"
)

var (
_ catalog.Manager = &Manager{}
_ catalog.Decorator = &Manager{}
_ catalog.ShellProvider = &Manager{}
)

type Manager struct {
}

func (m *Manager) Name() string {
return "mosquitto"
}

func (m *Manager) Category() catalog.Category {
return catalog.MessagingCategory
}

func (m *Manager) DisplayName() string {
return "Mosquitto"
}

func (m *Manager) Description() string {
return "Eclipse Mosquitto is an open source message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1"
}

const (
DefaultShell = "/bin/ash"
)

func (m *Manager) New() (engine.Container, error) {
image := "eclipse-mosquitto:2"

return engine.Container{
Image: image,

Ports: []*engine.ContainerPort{
{
Port: 1883,
Proto: engine.ProtocolTCP,
},
},

Mounts: []*engine.ContainerMount{
{
Path: "/mosquitto/config",
},
{
Path: "/mosquitto/data",
},
{
Path: "/mosquitto/log",
},
},
}, nil
}

func (m *Manager) Info(instance engine.Container) (map[string]string, error) {
var uri string

for _, p := range instance.Ports {
if p.HostPort == nil || p.Port != 1883 {
continue
}

uri = fmt.Sprintf("tcp://localhost:%d", *p.HostPort)
}

return map[string]string{
"URI": uri,
}, nil
}

func (m *Manager) Shell(instance engine.Container) (string, error) {
return DefaultShell, nil
}

0 comments on commit 7b392f2

Please sign in to comment.