mirror of
https://github.com/hanzoai/s3.git
synced 2026-10-30 14:59:09 +00:00
The binary is s3 and the product is Hanzo S3; the rest of the tree now says so too. - Environment: WEED_* and SEAWEEDFS_* are S3_*, no aliases. fla9's flag prefix is S3, matching viper's existing "s3" prefix, so the S3_S3_SSE_* names mini.go exports are the ones viper reads (WEED_S3_SSE_KEK was never seen once viper moved to "s3"). - Java and Hadoop: packages, fs.hanzofs.* keys and the hanzofs:// scheme under the hanzofs namespace the protos already declare; classes take a neutral Filer prefix and file names match them again (the earlier pass left Seas3*.java holding Seaweed* classes). Client, hdfs3, examples, s3copier, random_access and the Spark tests compile. - Helm chart: helpers are hanzo.*, values live under global.s3; the chart renders and lints, which it did not before. - Terraform: the s3.service.tftpl reference matches the file; 12/12 render tests pass. Config paths point at /etc/hanzo, which the binary reads. - loadtest.pb.go regenerated from loadtest.proto. - Upstream logo, sponsor images and unreferenced diagrams removed from note/. Kept: NOTICE attribution, LICENSE, the erasure-coding fixture s3/storage/erasure_coding/1.dat (test bytes), and unmaintained/ and third_party/ (vendored). No on-disk format, wire protocol or metadata key changed. Co-authored-by: Hanzo Dev <[email protected]>
101 lines
3.0 KiB
Terraform
101 lines
3.0 KiB
Terraform
# =============================================================================
|
|
# Local test harness: render a small Hanzo S3 cluster with the core module
|
|
# and run it as real `s3` processes on 127.0.0.1 (no cloud, no docker).
|
|
#
|
|
# 3 masters (quorum) + 1 volume + 1 filer + 1 standalone S3, each on a distinct
|
|
# port. run_local_cluster.sh consumes the `cluster` output, launches the s3
|
|
# processes from the rendered argv, and asserts the cluster actually works.
|
|
# =============================================================================
|
|
|
|
terraform {
|
|
required_version = ">= 1.3.0"
|
|
}
|
|
|
|
variable "s3_binary" {
|
|
description = "Path to the s3 executable used for the local cluster."
|
|
type = string
|
|
default = "/usr/bin/s3"
|
|
}
|
|
|
|
variable "workdir" {
|
|
description = "Scratch directory for per-node data dirs and config files."
|
|
type = string
|
|
default = "/tmp/s3-tftest"
|
|
}
|
|
|
|
module "core" {
|
|
source = "../../modules/core"
|
|
|
|
s3_binary = var.s3_binary
|
|
monitoring_enabled = false
|
|
enable_security = false
|
|
|
|
# High port range so the harness does not collide with a Hanzo S3 cluster
|
|
# that may already be running on this dev machine (default 9333/8080/8888/8333).
|
|
master = {
|
|
nodes = {
|
|
m0 = { address = "127.0.0.1", port = 29333, data_dir = "${var.workdir}/master-m0" }
|
|
m1 = { address = "127.0.0.1", port = 29334, data_dir = "${var.workdir}/master-m1" }
|
|
m2 = { address = "127.0.0.1", port = 29335, data_dir = "${var.workdir}/master-m2" }
|
|
}
|
|
# Tighten election so a 3-node local quorum converges quickly.
|
|
election_timeout = "3s"
|
|
heartbeat_interval = "200ms"
|
|
}
|
|
|
|
volume = {
|
|
nodes = {
|
|
v0 = {
|
|
address = "127.0.0.1"
|
|
port = 28080
|
|
rack = "rack-a"
|
|
data_dirs = [{ path = "${var.workdir}/volume-v0", max_volumes = 20 }]
|
|
}
|
|
}
|
|
}
|
|
|
|
filer = {
|
|
nodes = {
|
|
f0 = { address = "127.0.0.1", port = 28888, data_dir = "${var.workdir}/filer-f0" }
|
|
}
|
|
}
|
|
|
|
s3 = {
|
|
enabled = true
|
|
nodes = { s0 = { address = "127.0.0.1", port = 28333 } }
|
|
# this s3 build starts an Iceberg REST catalog on 8181 by default; disable
|
|
# it so the test does not collide with a cluster already using that port.
|
|
iceberg_port = 0
|
|
config_path = "${var.workdir}/s3_config.json"
|
|
}
|
|
|
|
# Anonymous identity so the smoke test can PUT/GET without sigv4 signing.
|
|
s3_identities = [{
|
|
name = "anonymous"
|
|
access_key = ""
|
|
secret_key = ""
|
|
actions = ["Admin", "Read", "Write", "List", "Tagging"]
|
|
}]
|
|
}
|
|
|
|
output "cluster" {
|
|
description = "Node specs consumed by run_local_cluster.sh (read via `tofu output -json`, which emits values even when sensitive)."
|
|
sensitive = true
|
|
value = {
|
|
for name, n in module.core.nodes : name => {
|
|
role = n.role
|
|
address = n.address
|
|
http_port = n.ports.http
|
|
data_dirs = n.data_dirs
|
|
argv = n.argv
|
|
env = n.env
|
|
config_files = n.config_files
|
|
exec_start = n.exec_start
|
|
}
|
|
}
|
|
}
|
|
|
|
output "master_peers" {
|
|
value = module.core.master_peers
|
|
}
|