profile

package
v3.13.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2022 License: Apache-2.0 Imports: 50 Imported by: 0

Documentation

Overview

Package profile is for specific profiles @todo this package is the definition of cruft and should be rewritten in a more elegant way

Index

Constants

This section is empty.

Variables

View Source
var Client = &Profile{
	Name:  "client",
	Setup: func(ctx *cli.Context) error { return nil },
}

Client profile is for any entrypoint that behaves as a client

View Source
var Dev = &Profile{
	Name: "dev",
	Setup: func(ctx *cli.Context) error {
		auth.DefaultAuth = mAuthNoop.NewAuth()
		runtime.DefaultRuntime = mRuntimeLocal.NewRuntime()

		store.DefaultStore = mStoreMemory.NewStore()
		config.DefaultConfig, _ = mConfigEnv.NewConfig()
		var err error
		events.DefaultStream, err = mEventStream.NewStream()
		if err != nil {
			logger.Fatalf("Error configuring stream for simple profile: %v", err)
		}

		SetupBroker(mBrokerMemory.NewBroker())

		SetupRegistry(mRegistryNoop.NewRegistry())

		return nil
	},
}

Dev profile to run service in simple config

View Source
var Develop = &Profile{
	Name: "develop",
	Setup: func(ctx *cli.Context) error {
		auth.DefaultAuth = mAuthJwt.NewAuth()
		store.DefaultStore = mStoreMemory.NewStore()
		SetupBroker(redisBroker.NewBroker(broker.Addrs(ctx.String("broker_address"))))
		SetupRegistry(etcd.NewRegistry(registry.Addrs(ctx.String("registry_address"))))
		SetupJWT(ctx)
		SetupConfigSecretKey(ctx)

		if !metrics.IsSet() {
			prometheusReporter, err := prometheus.New()
			if err != nil {
				logger.Fatalf("Error configuring prometheus: %v", err)
			}
			metrics.SetDefaultMetricsReporter(prometheusReporter)
		}

		var err error
		if ctx.Args().Get(1) == "events" {
			events.DefaultStream, err = redisstream.NewStream(redisStreamOpts(ctx)...)
			if err != nil {
				logger.Fatalf("Error configuring stream: %v", err)
			}
			events.DefaultStore = mEventStore.NewStore(
				mEventStore.WithStore(store.DefaultStore),
			)
		}

		if ctx.Args().Get(1) == "runtime" || ctx.Args().Get(1) == "store" {
			store.DefaultBlobStore, err = mStoreFile.NewBlobStore()
			if err != nil {
				logger.Fatalf("Error configuring file blob store: %v", err)
			}
		}

		model.DefaultModel = model.NewModel(
			model.WithStore(store.DefaultStore),
		)

		reporterAddress := os.Getenv("MICRO_TRACING_REPORTER_ADDRESS")
		if len(reporterAddress) == 0 {
			reporterAddress = jaeger.DefaultReporterAddress
		}

		tracingServiceName := ctx.Args().Get(1)
		if len(tracingServiceName) == 0 {
			tracingServiceName = "Micro"
		}
		openTracer, _, err := jaeger.New(
			opentelemetry.WithServiceName(tracingServiceName),
			opentelemetry.WithSamplingRate(1),
			opentelemetry.WithTraceReporterAddress(reporterAddress),
		)
		if err != nil {
			logger.Fatalf("Error configuring opentracing: %v", err)
		}
		opentelemetry.DefaultOpenTracer = openTracer
		opentracing.SetGlobalTracer(openTracer)

		runtime.DefaultRuntime = mRuntimeLocal.NewRuntime()
		return nil
	},
}

develop profile to run in dev env

View Source
var Kubernetes = &Profile{
	Name: "kubernetes",
	Setup: func(ctx *cli.Context) (err error) {
		auth.DefaultAuth = mAuthNJwt.NewAuth()
		SetupJWT(ctx)

		runtime.DefaultRuntime = mRuntimeK8s.NewRuntime()
		build.DefaultBuilder, err = golang.NewBuilder()
		if err != nil {
			logger.Fatalf("Error configuring golang builder: %v", err)
		}

		events.DefaultStream, err = memStream.NewStream()
		if err != nil {
			logger.Fatalf("Error configuring stream: %v", err)
		}

		store.DefaultStore = mStoreFile.NewStore(mStoreFile.WithDir("/store"))
		store.DefaultBlobStore, err = mStoreFile.NewBlobStore(mStoreFile.WithDir("/store/blob"))
		if err != nil {
			logger.Fatalf("Error configuring file blob store: %v", err)
		}

		model.DefaultModel = model.NewModel(
			model.WithStore(store.DefaultStore),
		)

		if ctx.Args().Get(1) == "registry" {
			SetupRegistry(mRegistryMem.NewRegistry())
		}

		if ctx.Args().Get(1) == "broker" {
			SetupBroker(mBrokerMen.NewBroker())
		}

		config.DefaultConfig, err = mConfigStore.NewConfig(store.DefaultStore, "")
		if err != nil {
			logger.Fatalf("Error configuring config: %v", err)
		}
		SetupConfigSecretKey(ctx)

		router.DefaultRouter = mRouterK8s.NewRouter()
		client.DefaultClient.Init(client.Router(router.DefaultRouter))

		tracingServiceName := ctx.Args().Get(1)
		if len(tracingServiceName) == 0 {
			tracingServiceName = "Micro"
		}
		openTracer, _, err := jaeger.New(
			opentelemetry.WithServiceName(tracingServiceName),
			opentelemetry.WithTraceReporterAddress("localhost:6831"),
		)
		if err != nil {
			logger.Fatalf("Error configuring opentracing: %v", err)
		}
		opentelemetry.DefaultOpenTracer = openTracer

		return nil
	},
}

Kubernetes profile to run on kubernetes with zero deps. Designed for use with the micro helm chart

View Source
var Local = &Profile{
	Name: "local",
	Setup: func(ctx *cli.Context) error {

		client.DefaultClient = mClientGrpc.NewClient()
		server.DefaultServer = mServerGrpc.NewServer()

		auth.DefaultAuth = mAuthNJwt.NewAuth()
		store.DefaultStore = mStoreFile.NewStore(mStoreFile.WithDir(filepath.Join(uUser.Dir, "server", "store")))
		SetupConfigSecretKey(ctx)
		config.DefaultConfig, _ = mConfigStore.NewConfig(store.DefaultStore, "")

		SetupJWT(ctx)
		SetupRegistry(mRegistryMem.NewRegistry())
		SetupBroker(mBrokerMen.NewBroker())

		model.DefaultModel = model.NewModel(
			model.WithStore(store.DefaultStore),
		)

		runtime.DefaultRuntime = mRuntimeLocal.NewRuntime()

		var err error
		events.DefaultStream, err = memStream.NewStream()
		if err != nil {
			logger.Fatalf("Error configuring stream: %v", err)
		}
		events.DefaultStore = mEventStore.NewStore(
			mEventStore.WithStore(store.DefaultStore),
		)

		store.DefaultBlobStore, err = mStoreFile.NewBlobStore()
		if err != nil {
			logger.Fatalf("Error configuring file blob store: %v", err)
		}

		return nil
	},
}

Local profile to run as a single process

View Source
var Server = &Profile{
	Name: "server",
	Setup: func(ctx *cli.Context) error {
		auth.DefaultAuth = mAuthNJwt.NewAuth()
		store.DefaultStore = mStoreFile.NewStore(mStoreFile.WithDir(filepath.Join(uUser.Dir, "server", "store")))
		SetupConfigSecretKey(ctx)
		config.DefaultConfig, _ = mConfigStore.NewConfig(store.DefaultStore, "")
		SetupJWT(ctx)

		if ctx.Args().Get(1) == "registry" {
			SetupRegistry(mRegistryMem.NewRegistry())
		} else {

			registry.DefaultRegistry.Init(
				registry.Addrs("localhost:8000"),
			)

			SetupRegistry(registry.DefaultRegistry)
		}

		if ctx.Args().Get(1) == "broker" {
			SetupBroker(mBrokerMen.NewBroker())
		} else {
			broker.DefaultBroker.Init(
				broker.Addrs("localhost:8003"),
			)
			SetupBroker(broker.DefaultBroker)
		}

		model.DefaultModel = model.NewModel(
			model.WithStore(store.DefaultStore),
		)

		runtime.DefaultRuntime = mRuntimeLocal.NewRuntime()

		var err error
		events.DefaultStream, err = memStream.NewStream()
		if err != nil {
			logger.Fatalf("Error configuring stream: %v", err)
		}
		events.DefaultStore = mEventStore.NewStore(
			mEventStore.WithStore(store.DefaultStore),
		)

		store.DefaultBlobStore, err = mStoreFile.NewBlobStore()
		if err != nil {
			logger.Fatalf("Error configuring file blob store: %v", err)
		}

		tracingServiceName := ctx.Args().Get(1)
		if len(tracingServiceName) == 0 {
			tracingServiceName = "Micro"
		}
		openTracer, _, err := jaeger.New(
			opentelemetry.WithServiceName(tracingServiceName),
			opentelemetry.WithSamplingRate(1),
		)
		if err != nil {
			logger.Fatalf("Error configuring opentracing: %v", err)
		}
		opentelemetry.DefaultOpenTracer = openTracer

		return nil
	},
}
View Source
var Service = &Profile{
	Name:  "service",
	Setup: func(ctx *cli.Context) error { return nil },
}

Service is the default for any services run

View Source
var Simple = &Profile{
	Name: "simple",
	Setup: func(ctx *cli.Context) error {

		auth.DefaultAuth = mAuthNoop.NewAuth()

		store.DefaultStore = mStoreMemory.NewStore()
		config.DefaultConfig, _ = mConfigEnv.NewConfig()
		var err error
		events.DefaultStream, err = mEventStream.NewStream()
		if err != nil {
			logger.Fatalf("Error configuring stream for simple profile: %v", err)
		}

		SetupBroker(mBrokerMemory.NewBroker())

		SetupRegistry(mRegistryNoop.NewRegistry())

		SetupJWT(ctx)
		SetupConfigSecretKey(ctx)

		if ctx.Args().Get(1) == "events" {
			events.DefaultStream, err = redisstream.NewStream(redisStreamOpts(ctx)...)
			if err != nil {
				logger.Fatalf("Error configuring stream: %v", err)
			}
			events.DefaultStore = mEventStore.NewStore(
				mEventStore.WithStore(store.DefaultStore),
			)
		}

		if ctx.Args().Get(1) == "runtime" || ctx.Args().Get(1) == "store" {
			store.DefaultBlobStore, err = mStoreFile.NewBlobStore()
			if err != nil {
				logger.Fatalf("Error configuring file blob store: %v", err)
			}
		}

		model.DefaultModel = model.NewModel(model.WithStore(store.DefaultStore))

		runtime.DefaultRuntime = mRuntimeLocal.NewRuntime()
		return nil
	},
}

Simple profile to run service in simple config

View Source
var Test = &Profile{
	Name: "test",
	Setup: func(ctx *cli.Context) error {
		auth.DefaultAuth = mAuthNoop.NewAuth()
		store.DefaultStore = mStoreMem.NewStore()
		store.DefaultBlobStore, _ = mStoreFile.NewBlobStore()
		config.DefaultConfig, _ = mConfigStore.NewConfig(store.DefaultStore, "")
		SetupRegistry(mRegistryMem.NewRegistry())

		model.DefaultModel = model.NewModel(
			model.WithStore(store.DefaultStore),
		)
		return nil
	},
}

Test profile is used for the go test suite

Functions

func Register

func Register(name string, p *Profile) error

Register a profile

func SetupBroker

func SetupBroker(b broker.Broker)

SetupBroker configures the broker

func SetupConfigSecretKey

func SetupConfigSecretKey(ctx *cli.Context)

func SetupJWT

func SetupJWT(ctx *cli.Context)

SetupJWT configures the default internal system rules

func SetupRegistry

func SetupRegistry(reg registry.Registry)

SetupRegistry configures the registry

Types

type Profile

type Profile struct {
	// name of the profile
	Name string
	// function used for setup
	Setup func(*cli.Context) error
}

Profile configures an environment

func Load

func Load(name string) (*Profile, error)

Load a profile

Directories

Path Synopsis
Package ci is for continuous integration testing
Package ci is for continuous integration testing
Package platform is a profile for running a highly available Micro platform
Package platform is a profile for running a highly available Micro platform

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL