mirror of
https://github.com/davidallendj/magellan.git
synced 2025-12-20 03:27:03 -07:00
commit
19f7803f9a
23 changed files with 64 additions and 65 deletions
|
|
@ -14,15 +14,15 @@ builds:
|
|||
# export GO_VERSION=$(go version | awk '{print $3}')
|
||||
# export BUILD_USER=$(whoami)
|
||||
ldflags:
|
||||
- "-X github.com/OpenCHAMI/magellan/internal/version.GitCommit={{ .Commit }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.BuildTime={{ .Timestamp }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.Version={{ .Version }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.GitBranch={{ .Branch }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.GitTag={{ .Tag }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.GitState={{ .Env.GIT_STATE }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.BuildHost={{ .Env.BUILD_HOST }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.GoVersion={{ .Env.GO_VERSION }} \
|
||||
-X github.com/OpenCHAMI/magellan/internal/version.BuildUser={{ .Env.BUILD_USER }} "
|
||||
- "-X github.com/davidallendj/magellan/internal/version.GitCommit={{ .Commit }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.BuildTime={{ .Timestamp }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.Version={{ .Version }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.GitBranch={{ .Branch }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.GitTag={{ .Tag }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.GitState={{ .Env.GIT_STATE }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.BuildHost={{ .Env.BUILD_HOST }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.GoVersion={{ .Env.GO_VERSION }} \
|
||||
-X github.com/davidallendj/magellan/internal/version.BuildUser={{ .Env.BUILD_USER }} "
|
||||
tags:
|
||||
- version
|
||||
goos:
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ Tidied up CLI flag names
|
|||
|
||||
* Ability to update firmware
|
||||
* Refactored connection handling for faster scanning
|
||||
* Updated to reflect home at github.com/OpenCHAMI
|
||||
* Updated to reflect home at github.com/davidallendj
|
||||
* Updated to reflect ghcr.io as container home
|
||||
|
||||
## [Unreleased]
|
||||
|
|
|
|||
6
Makefile
6
Makefile
|
|
@ -100,9 +100,9 @@ diff: ## git diff
|
|||
.PHONY: docs
|
||||
docs: ## go docs
|
||||
$(call print-target)
|
||||
go doc github.com/OpenCHAMI/magellan/cmd
|
||||
go doc github.com/OpenCHAMI/magellan/internal
|
||||
go doc github.com/OpenCHAMI/magellan/pkg/crawler
|
||||
go doc github.com/davidallendj/magellan/cmd
|
||||
go doc github.com/davidallendj/magellan/internal
|
||||
go doc github.com/davidallendj/magellan/pkg/crawler
|
||||
|
||||
.PHONY: emulator
|
||||
emulator:
|
||||
|
|
|
|||
19
README.md
19
README.md
|
|
@ -1,6 +1,6 @@
|
|||
# OpenCHAMI Magellan
|
||||
# Magellan
|
||||
|
||||
The `magellan` CLI tool is a Redfish-based, board management controller (BMC) discovery tool designed to scan networks and is written in Go. The tool collects information from BMC nodes using the provided Redfish RESTful API with [`gofish`](https://github.com/stmcginnis/gofish) and loads the queried data into an [SMD](https://github.com/OpenCHAMI/smd/tree/master) instance. The tool strives to be more flexible by implementing multiple methods of discovery to work for a wider range of systems (WIP) and is capable of using independently of other tools or services.
|
||||
The `magellan` CLI tool is a Redfish-based, board management controller (BMC) discovery tool designed to scan networks and is written in Go. The tool collects information from BMC nodes using the provided Redfish RESTful API with [`gofish`](https://github.com/stmcginnis/gofish) and loads the queried data into an [SMD](https://github.com/davidallendj/smd/tree/master) instance. The tool strives to be more flexible by implementing multiple methods of discovery to work for a wider range of systems (WIP) and is capable of using independently of other tools or services.
|
||||
|
||||
**Note: `magellan` v0.1.0 is incompatible with SMD v2.15.3 and earlier.**
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ See the [TODO](#todo) section for a list of soon-ish goals planned.
|
|||
The `magellan` tool can be built to run on bare metal. Install the required Go tools, clone the repo, and then build the binary in the root directory with the following:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/OpenCHAMI/magellan
|
||||
git clone https://github.com/davidallendj/magellan
|
||||
cd magellan
|
||||
go mod tidy && go build
|
||||
```
|
||||
|
|
@ -58,10 +58,10 @@ This might take some time to complete initially because of the `go-sqlite3` driv
|
|||
|
||||
### Docker
|
||||
|
||||
The tool can also run using Docker. To build the Docker container, run `docker build -t magellan:testing .` in the project's directory. This is useful if you to run `magellan` on a different system through Docker desktop without having to install and build with Go (or if you can't do so for some reason). [Prebuilt images](https://github.com/OpenCHAMI/magellan/pkgs/container/magellan) are available as well on `ghcr`. Images can be pulled directly from the repository:
|
||||
The tool can also run using Docker. To build the Docker container, run `docker build -t magellan:testing .` in the project's directory. This is useful if you to run `magellan` on a different system through Docker desktop without having to install and build with Go (or if you can't do so for some reason). [Prebuilt images](https://github.com/davidallendj/magellan/pkgs/container/magellan) are available as well on `ghcr`. Images can be pulled directly from the repository:
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/openchami/magellan:latest
|
||||
docker pull ghcr.io/davidallendj/magellan:latest
|
||||
```
|
||||
|
||||
See the ["Running with Docker"](#running-with-docker) section below about running with the Docker container.
|
||||
|
|
@ -195,7 +195,7 @@ watch -n 1 "./magellan update 172.16.0.110 --status --username $USERNAME --passw
|
|||
|
||||
### Getting an Access Token (WIP)
|
||||
|
||||
The `magellan` tool has a `login` subcommand that works with the [`opaal`](https://github.com/OpenCHAMI/opaal) service to obtain a token needed to access the SMD service. If the SMD instance requires authentication, set the `ACCESS_TOKEN` environment variable to have `magellan` include it in the header for HTTP requests to SMD.
|
||||
The `magellan` tool has a `login` subcommand that works with the [`opaal`](https://github.com/davidallendj/opaal) service to obtain a token needed to access the SMD service. If the SMD instance requires authentication, set the `ACCESS_TOKEN` environment variable to have `magellan` include it in the header for HTTP requests to SMD.
|
||||
|
||||
```bash
|
||||
# must have a running OPAAL instance
|
||||
|
|
@ -205,7 +205,7 @@ The `magellan` tool has a `login` subcommand that works with the [`opaal`](https
|
|||
export ACCESS_TOKEN=eyJhbGciOiJIUzI1NiIs...
|
||||
```
|
||||
|
||||
Alternatively, if you are running the OpenCHAMI quickstart in the [deployment recipes](https://github.com/OpenCHAMI/deployment-recipes), you can run the provided script to generate a token and set the environment variable that way.
|
||||
Alternatively, if you are running the OpenCHAMI quickstart in the [deployment recipes](https://github.com/davidallendj/deployment-recipes), you can run the provided script to generate a token and set the environment variable that way.
|
||||
|
||||
```bash
|
||||
quickstart_dir=path/to/deployment/recipes/quickstart
|
||||
|
|
@ -218,8 +218,7 @@ export ACCESS_TOKEN=$(gen_access_token)
|
|||
The `magellan` tool can be ran in a Docker container after pulling the latest image:
|
||||
|
||||
```bash
|
||||
docker pull ghcr.io/openchami/magellan:latest
|
||||
|
||||
docker pull ghcr.io/davidallendj/magellan:latest
|
||||
```
|
||||
|
||||
Then, run either with the helper script found in `bin/magellan.sh` or the binary in the container:
|
||||
|
|
@ -250,7 +249,7 @@ In summary, `magellan` needs at minimum the following configured to work on each
|
|||
|
||||
## TODO
|
||||
|
||||
See the [issue list](https://github.com/OpenCHAMI/magellan/issues) for plans for `magellan`. Here is a list of other features left to add, fix, or do (and some ideas!):
|
||||
See the [issue list](https://github.com/davidallendj/magellan/issues) for plans for `magellan`. Here is a list of other features left to add, fix, or do (and some ideas!):
|
||||
|
||||
* [X] Confirm loading different components into SMD
|
||||
* [X] Add ability to set subnet mask for scanning
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ import (
|
|||
"fmt"
|
||||
"os/user"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
"github.com/OpenCHAMI/magellan/internal/cache/sqlite"
|
||||
urlx "github.com/OpenCHAMI/magellan/internal/url"
|
||||
"github.com/OpenCHAMI/magellan/pkg/auth"
|
||||
"github.com/cznic/mathutil"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/davidallendj/magellan/internal/cache/sqlite"
|
||||
urlx "github.com/davidallendj/magellan/internal/url"
|
||||
"github.com/davidallendj/magellan/pkg/auth"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
|
||||
urlx "github.com/OpenCHAMI/magellan/internal/url"
|
||||
"github.com/OpenCHAMI/magellan/pkg/crawler"
|
||||
urlx "github.com/davidallendj/magellan/internal/url"
|
||||
"github.com/davidallendj/magellan/pkg/crawler"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/OpenCHAMI/magellan/internal/cache/sqlite"
|
||||
"github.com/davidallendj/magellan/internal/cache/sqlite"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
"github.com/OpenCHAMI/magellan/pkg/auth"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/davidallendj/magellan/pkg/auth"
|
||||
"github.com/lestrrat-go/jwx/jwt"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import (
|
|||
"os"
|
||||
"os/user"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
"github.com/OpenCHAMI/magellan/internal/cache/sqlite"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/davidallendj/magellan/internal/cache/sqlite"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
urlx "github.com/OpenCHAMI/magellan/internal/url"
|
||||
"github.com/cznic/mathutil"
|
||||
urlx "github.com/davidallendj/magellan/internal/url"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import (
|
|||
"os"
|
||||
"strings"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/OpenCHAMI/magellan/internal/version"
|
||||
"github.com/davidallendj/magellan/internal/version"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -1,4 +1,4 @@
|
|||
module github.com/OpenCHAMI/magellan
|
||||
module github.com/davidallendj/magellan
|
||||
|
||||
go 1.21
|
||||
|
||||
|
|
|
|||
4
internal/cache/sqlite/sqlite.go
vendored
4
internal/cache/sqlite/sqlite.go
vendored
|
|
@ -4,8 +4,8 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
"github.com/OpenCHAMI/magellan/internal/util"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/davidallendj/magellan/internal/util"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -10,13 +10,13 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/OpenCHAMI/magellan/pkg/client"
|
||||
"github.com/OpenCHAMI/magellan/pkg/crawler"
|
||||
"github.com/davidallendj/magellan/pkg/client"
|
||||
"github.com/davidallendj/magellan/pkg/crawler"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package magellan
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/OpenCHAMI/magellan/internal/util"
|
||||
"github.com/davidallendj/magellan/internal/util"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
urlx "github.com/OpenCHAMI/magellan/internal/url"
|
||||
"github.com/OpenCHAMI/magellan/pkg/client"
|
||||
urlx "github.com/davidallendj/magellan/internal/url"
|
||||
"github.com/davidallendj/magellan/pkg/client"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/OpenCHAMI/magellan/pkg/client"
|
||||
"github.com/davidallendj/magellan/pkg/client"
|
||||
)
|
||||
|
||||
type UpdateParams struct {
|
||||
|
|
|
|||
|
|
@ -5,40 +5,40 @@ import (
|
|||
)
|
||||
|
||||
// GitCommit stores the latest Git commit hash.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.GitCommit=$(git rev-parse HEAD)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.GitCommit=$(git rev-parse HEAD)"
|
||||
var GitCommit string
|
||||
|
||||
// BuildTime stores the build timestamp in UTC.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.BuildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.BuildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
var BuildTime string
|
||||
|
||||
// Version indicates the version of the binary, such as a release number or semantic version.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.Version=v1.0.0"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.Version=v1.0.0"
|
||||
var Version string
|
||||
|
||||
// GitBranch holds the name of the Git branch from which the build was created.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.GitBranch=$(git rev-parse --abbrev-ref HEAD)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.GitBranch=$(git rev-parse --abbrev-ref HEAD)"
|
||||
var GitBranch string
|
||||
|
||||
// GitTag represents the most recent Git tag at build time, if any.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.GitTag=$(git describe --tags --abbrev=0)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.GitTag=$(git describe --tags --abbrev=0)"
|
||||
var GitTag string
|
||||
|
||||
// GitState indicates whether the working directory was "clean" or "dirty" (i.e., with uncommitted changes).
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.GitState=$(if git diff-index --quiet HEAD --; then echo 'clean'; else echo 'dirty'; fi)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.GitState=$(if git diff-index --quiet HEAD --; then echo 'clean'; else echo 'dirty'; fi)"
|
||||
var GitState string
|
||||
|
||||
// BuildHost stores the hostname of the machine where the binary was built.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.BuildHost=$(hostname)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.BuildHost=$(hostname)"
|
||||
var BuildHost string
|
||||
|
||||
// GoVersion captures the Go version used to build the binary.
|
||||
// Typically, this can be obtained automatically with runtime.Version(), but you can set it manually.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.GoVersion=$(go version | awk '{print $3}')"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.GoVersion=$(go version | awk '{print $3}')"
|
||||
var GoVersion string
|
||||
|
||||
// BuildUser is the username of the person or system that initiated the build process.
|
||||
// Set via -ldflags "-X github.com/OpenCHAMI/magellan/internal/version.BuildUser=$(whoami)"
|
||||
// Set via -ldflags "-X github.com/davidallendj/magellan/internal/version.BuildUser=$(whoami)"
|
||||
var BuildUser string
|
||||
|
||||
// PrintVersionInfo outputs all versioning information for troubleshooting or version checks.
|
||||
|
|
|
|||
2
main.go
2
main.go
|
|
@ -1,7 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/OpenCHAMI/magellan/cmd"
|
||||
"github.com/davidallendj/magellan/cmd"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package client
|
||||
|
||||
// See ref for API docs:
|
||||
// https://github.com/OpenCHAMI/hms-smd/blob/master/docs/examples.adoc
|
||||
// https://github.com/OpenCHAMI/hms-smd
|
||||
// https://github.com/davidallendj/hms-smd/blob/master/docs/examples.adoc
|
||||
// https://github.com/davidallendj/hms-smd
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@ import (
|
|||
|
||||
"flag"
|
||||
|
||||
magellan "github.com/OpenCHAMI/magellan/internal"
|
||||
"github.com/OpenCHAMI/magellan/internal/util"
|
||||
"github.com/OpenCHAMI/magellan/pkg/client"
|
||||
magellan "github.com/davidallendj/magellan/internal"
|
||||
"github.com/davidallendj/magellan/internal/util"
|
||||
"github.com/davidallendj/magellan/pkg/client"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ import (
|
|||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/OpenCHAMI/magellan/pkg/client"
|
||||
"github.com/OpenCHAMI/magellan/pkg/crawler"
|
||||
"github.com/davidallendj/magellan/pkg/client"
|
||||
"github.com/davidallendj/magellan/pkg/crawler"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue