zdravko/pkg/temporal/config.go

157 lines
3.9 KiB
Go

package temporal
import (
"crypto/ecdsa"
"crypto/rsa"
"fmt"
"time"
internal "github.com/mentos1386/zdravko/internal/config"
"github.com/mentos1386/zdravko/pkg/jwt"
"go.temporal.io/server/common/cluster"
"go.temporal.io/server/common/config"
"go.temporal.io/server/common/persistence/sql/sqlplugin/sqlite"
)
const PersistenceStoreName = "sqlite-default"
const BroadcastAddress = "127.0.0.1"
const FrontendHttpPort = 8233
const FrontendPort = 7233
const HistoryPort = 7234
const MatchingPort = 7235
const WorkerPort = 7236
const InternalFrontendPort = 7237
type TokenKeyProvider struct {
config *internal.TemporalConfig
}
func (p *TokenKeyProvider) SupportedMethods() []string {
return []string{"RS256", "RS384", "RS512"}
}
func (p *TokenKeyProvider) HmacKey(alg string, kid string) ([]byte, error) {
return nil, fmt.Errorf("HMAC key is not supported")
}
func (p *TokenKeyProvider) EcdsaKey(alg string, kid string) (*ecdsa.PublicKey, error) {
return nil, fmt.Errorf("ECDSA key is not supported")
}
func (p *TokenKeyProvider) RsaKey(alg string, kid string) (*rsa.PublicKey, error) {
return jwt.JwtPublicKey(p.config.Jwt.PublicKey)
}
func (p *TokenKeyProvider) Close() {
}
func NewServerConfig(cfg *internal.TemporalConfig) *config.Config {
return &config.Config{
Persistence: config.Persistence{
DataStores: map[string]config.DataStore{
PersistenceStoreName: {SQL: &config.SQL{
PluginName: sqlite.PluginName,
ConnectAttributes: map[string]string{
"mode": "rwc",
},
DatabaseName: cfg.DatabasePath,
},
},
},
DefaultStore: PersistenceStoreName,
VisibilityStore: PersistenceStoreName,
NumHistoryShards: 1,
},
Global: config.Global{
Membership: config.Membership{
MaxJoinDuration: 30 * time.Second,
BroadcastAddress: BroadcastAddress,
},
Authorization: config.Authorization{},
},
Services: map[string]config.Service{
"frontend": {
RPC: config.RPC{
HTTPPort: FrontendHttpPort,
GRPCPort: FrontendPort,
MembershipPort: FrontendPort + 100,
BindOnLocalHost: false,
BindOnIP: cfg.ListenAddress,
},
},
"history": {
RPC: config.RPC{
GRPCPort: HistoryPort,
MembershipPort: HistoryPort + 100,
BindOnLocalHost: true,
BindOnIP: "",
},
},
"matching": {
RPC: config.RPC{
GRPCPort: MatchingPort,
MembershipPort: MatchingPort + 100,
BindOnLocalHost: true,
BindOnIP: "",
},
},
"worker": {
RPC: config.RPC{
GRPCPort: WorkerPort,
MembershipPort: WorkerPort + 100,
BindOnLocalHost: true,
BindOnIP: "",
},
},
"internal-frontend": {
RPC: config.RPC{
GRPCPort: InternalFrontendPort,
MembershipPort: InternalFrontendPort + 100,
BindOnLocalHost: true,
BindOnIP: "",
},
},
},
ClusterMetadata: &cluster.Config{
EnableGlobalNamespace: false,
FailoverVersionIncrement: 10,
MasterClusterName: "active",
CurrentClusterName: "active",
ClusterInformation: map[string]cluster.ClusterInformation{
"active": {
Enabled: true,
InitialFailoverVersion: 1,
RPCAddress: fmt.Sprintf("%s:%d", BroadcastAddress, InternalFrontendPort),
ClusterID: "todo",
},
},
},
DCRedirectionPolicy: config.DCRedirectionPolicy{
Policy: "noop",
},
Archival: config.Archival{
History: config.HistoryArchival{
State: "disabled",
EnableRead: false,
Provider: nil,
},
Visibility: config.VisibilityArchival{
State: "disabled",
EnableRead: false,
Provider: nil,
},
},
NamespaceDefaults: config.NamespaceDefaults{
Archival: config.ArchivalNamespaceDefaults{
History: config.HistoryArchivalNamespaceDefaults{
State: "disabled",
},
Visibility: config.VisibilityArchivalNamespaceDefaults{
State: "disabled",
},
},
},
}
}