go

module
v0.1.45 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2020 License: MIT

README

Be advised: this project is currently at Major version zero. Per the semantic versioning spec: "Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable."

Problem statement

Go SDK for opctl.

Documentation

Documentation for SDK packages are maintained in golang's native go doc format; which is web browsable via the godoc webpage

Usage

Run an op using an API client.

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"net/url"
	"time"

	"github.com/opctl/opctl/sdks/go/model"
	"github.com/opctl/opctl/sdks/go/node/api/client"
)

func constructAPIClient(
) client.Client {
	// get client
	nodeURL, err := url.Parse("http://localhost:42224/api")
	if nil != err {
		panic(err)
	}

	return client.New(
		*nodeURL,
		&client.Opts{
			RetryLogHook: func(err error) {
				fmt.Printf("unable to connect to node; error was: %v\n", err)
			},
		},
	)
}

func main() {
    ctx := context.Background()
	startTime := time.Now()
	apiClient := constructAPIClient()

	// start op
	rootID, err := apiClient.StartOp(
		ctx,
		model.StartOpReq{
			Args: map[string]*model.Value{},
			Op: model.StartOpReqOp{
				Ref: "github.com/opspec-pkgs/uuid.v4.generate#1.1.0",
			},
		},
	)
	if nil != err {
		panic(err)
	}

	// get event stream filtered to events from our op
	eventChan, err := apiClient.GetEventStream(
		ctx,
		&model.GetEventStreamReq{
			Filter: model.EventFilter{
				Roots: []string{rootID},
				Since: &startTime,
			},
		},
	)
	if nil != err {
		panic(err)
	}

	for event := range eventChan {

		// print events
		eventAsJSON, err := json.MarshalIndent(event, "", "    ")
		if nil != err {
			panic(err)
		}
		fmt.Println(string(eventAsJSON))

		if nil != event.CallEnded &&
			event.CallEnded.CallID == rootID {

			// close event stream on root op ended
			close(eventChan)

		}
	}
}

Contributing

see CONTRIBUTING.md

Directories

Path Synopsis
Package data implements use cases specific to data
Package data implements use cases specific to data
coerce
Package coerce implements typed data coercion
Package coerce implements typed data coercion
fs
git
internal
iruntime/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
uniquestring/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
urlpath
Package urlpath exports NextSegment for nexting urlpath's.
Package urlpath exports NextSegment for nexting urlpath's.
fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
node
api
api/client
Package client implements a client for the opspec node api
Package client implements a client for the opspec node api
api/client/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler
Package handler defines an HTTP handler for the opctl API
Package handler defines an HTTP handler for the opctl API
api/handler/auths
Package auths exposes functionality for handling "auths" requests.
Package auths exposes functionality for handling "auths" requests.
api/handler/auths/adds
Package adds exposes functionality for handling "auths/adds" requests.
Package adds exposes functionality for handling "auths/adds" requests.
api/handler/auths/adds/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/auths/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/data
Package data exposes functionality for handling "data" requests.
Package data exposes functionality for handling "data" requests.
api/handler/data/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/data/ref
Package ref exposes functionality for handling "data/{ref}" requests.
Package ref exposes functionality for handling "data/{ref}" requests.
api/handler/data/ref/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/data/ref/internal/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/events
Package events exposes functionality for handling "events" requests.
Package events exposes functionality for handling "events" requests.
api/handler/events/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/events/stream
Package stream exposes functionality for handling "events/stream" requests.
Package stream exposes functionality for handling "events/stream" requests.
api/handler/events/stream/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/liveness
Package liveness exposes functionality for handling "liveness" requests.
Package liveness exposes functionality for handling "liveness" requests.
api/handler/liveness/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/ops
Package ops exposes functionality for handling "ops" requests.
Package ops exposes functionality for handling "ops" requests.
api/handler/ops/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/ops/kills
Package kills exposes functionality for handling "ops/kills" requests.
Package kills exposes functionality for handling "ops/kills" requests.
api/handler/ops/kills/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/ops/starts
Package starts exposes functionality for handling "ops/starts" requests.
Package starts exposes functionality for handling "ops/starts" requests.
api/handler/ops/starts/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/pkgs
Package pkgs exposes functionality for handling "pkgs" requests.
Package pkgs exposes functionality for handling "pkgs" requests.
api/handler/pkgs/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/pkgs/ref
Package ref exposes functionality for handling "pkgs/{ref}" requests.
Package ref exposes functionality for handling "pkgs/{ref}" requests.
api/handler/pkgs/ref/contents
Package contents exposes functionality for handling "pkgs/{ref}/contents" requests.
Package contents exposes functionality for handling "pkgs/{ref}/contents" requests.
api/handler/pkgs/ref/contents/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/pkgs/ref/contents/path
Package ref exposes functionality for handling "pkgs/{ref}/contents/path" requests.
Package ref exposes functionality for handling "pkgs/{ref}/contents/path" requests.
api/handler/pkgs/ref/contents/path/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
api/handler/pkgs/ref/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
core
Package core defines the core interface for an opspec node
Package core defines the core interface for an opspec node
core/containerruntime
Package containerruntime defines an interface abstracting container runtime interactions.
Package containerruntime defines an interface abstracting container runtime interactions.
Code generated by counterfeiter.
core/containerruntime/docker/internal/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
core/containerruntime/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
core/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
core/internal/fakes
Code generated by counterfeiter.
Code generated by counterfeiter.
interpreter
Package interpreter defines an interpreter for ops.
Package interpreter defines an interpreter for ops.
interpreter/array
Package array exposes functionality for interpreting arrays.
Package array exposes functionality for interpreting arrays.
interpreter/boolean
Package boolean exposes functionality for interpreting booleans.
Package boolean exposes functionality for interpreting booleans.
interpreter/call
Package call exposes functionality for interpreting calls.
Package call exposes functionality for interpreting calls.
interpreter/call/container
Package container exposes functionality for interpreting container calls.
Package container exposes functionality for interpreting container calls.
interpreter/call/container/cmd
Package cmd exposes functionality for interpreting envVars of container calls.
Package cmd exposes functionality for interpreting envVars of container calls.
interpreter/call/container/dirs
Package dirs exposes functionality for interpreting dirs of container calls.
Package dirs exposes functionality for interpreting dirs of container calls.
interpreter/call/container/envvars
Package envvars exposes functionality for interpreting envVars of container calls.
Package envvars exposes functionality for interpreting envVars of container calls.
interpreter/call/container/files
Package files exposes functionality for interpreting files of container calls.
Package files exposes functionality for interpreting files of container calls.
interpreter/call/container/image
Package image exposes functionality for interpreting image of container calls.
Package image exposes functionality for interpreting image of container calls.
interpreter/call/container/sockets
Package sockets exposes functionality for interpreting sockets of container calls.
Package sockets exposes functionality for interpreting sockets of container calls.
interpreter/call/loop
Package loop exposes functionality for interpreting call loops.
Package loop exposes functionality for interpreting call loops.
interpreter/call/op
Package op exposes functionality for interpreting op calls.
Package op exposes functionality for interpreting op calls.
interpreter/call/op/inputs
Package inputs exposes functionality for interpreting inputs of op calls.
Package inputs exposes functionality for interpreting inputs of op calls.
interpreter/call/op/inputs/input
Package input exposes functionality for interpreting an input of an op call.
Package input exposes functionality for interpreting an input of an op call.
interpreter/call/op/outputs
Package outputs exposes functionality for interpreting outputs of op calls.
Package outputs exposes functionality for interpreting outputs of op calls.
interpreter/call/op/params
Package params exposes functionality for interpreting parameters of op calls.
Package params exposes functionality for interpreting parameters of op calls.
interpreter/call/op/params/param
Package param exposes functionality for interpreting a param of an op call.
Package param exposes functionality for interpreting a param of an op call.
interpreter/call/op/params/param/array
Package array exposes functionality for interpreting an array param of an op call.
Package array exposes functionality for interpreting an array param of an op call.
interpreter/call/op/params/param/boolean
Package boolean exposes functionality for interpreting a boolean param of an op call.
Package boolean exposes functionality for interpreting a boolean param of an op call.
interpreter/call/op/params/param/dir
Package dir exposes functionality for interpreting a dir param of an op call.
Package dir exposes functionality for interpreting a dir param of an op call.
interpreter/call/op/params/param/file
Package file exposes functionality for interpreting a file param of an op call.
Package file exposes functionality for interpreting a file param of an op call.
interpreter/call/op/params/param/number
Package number exposes functionality for interpreting a number param of an op call.
Package number exposes functionality for interpreting a number param of an op call.
interpreter/call/op/params/param/object
Package object exposes functionality for interpreting an object param of an op call.
Package object exposes functionality for interpreting an object param of an op call.
interpreter/call/op/params/param/socket
Package socket exposes functionality for interpreting a socket param of an op call.
Package socket exposes functionality for interpreting a socket param of an op call.
interpreter/call/op/params/param/str
Package str exposes functionality for interpreting a string param of an op call.
Package str exposes functionality for interpreting a string param of an op call.
interpreter/call/predicates
Package predicates exposes functionality for interpreting an array of predicates.
Package predicates exposes functionality for interpreting an array of predicates.
interpreter/call/predicates/predicate
Package predicate exposes functionality for interpreting a predicate.
Package predicate exposes functionality for interpreting a predicate.
interpreter/call/predicates/predicate/eq
Package eq exposes functionality for interpreting an eq predicate.
Package eq exposes functionality for interpreting an eq predicate.
interpreter/call/predicates/predicate/exists
Package exists exposes functionality for interpreting an exists predicate.
Package exists exposes functionality for interpreting an exists predicate.
interpreter/call/predicates/predicate/ne
Package ne exposes functionality for interpreting a ne predicate.
Package ne exposes functionality for interpreting a ne predicate.
interpreter/call/predicates/predicate/notexists
Package notexists exposes functionality for interpreting a notExists predicate.
Package notexists exposes functionality for interpreting a notExists predicate.
interpreter/dir
Package dir exposes functionality for interpreting dirs.
Package dir exposes functionality for interpreting dirs.
interpreter/file
Package file exposes functionality for interpreting files.
Package file exposes functionality for interpreting files.
interpreter/loopable
Package loopable exposes functionality for interpreting something loopable.
Package loopable exposes functionality for interpreting something loopable.
interpreter/number
Package number exposes functionality for interpreting numbers.
Package number exposes functionality for interpreting numbers.
interpreter/object
Package object exposes functionality for interpreting objects.
Package object exposes functionality for interpreting objects.
interpreter/reference
Package reference exposes functionality for interpreting a reference.
Package reference exposes functionality for interpreting a reference.
interpreter/reference/direntry
Package direntry exposes functionality for dereferencing dir entries.
Package direntry exposes functionality for dereferencing dir entries.
interpreter/reference/identifier
Package identifier exposes functionality for dereferencing identifiers.
Package identifier exposes functionality for dereferencing identifiers.
interpreter/reference/identifier/bracketed
Package bracketed exposes functionality for dereferencing bracketed identifiers.
Package bracketed exposes functionality for dereferencing bracketed identifiers.
interpreter/reference/identifier/unbracketed
Package unbracketed exposes functionality for dereferencing bracketed identifiers.
Package unbracketed exposes functionality for dereferencing bracketed identifiers.
interpreter/str
Package string exposes functionality for interpreting strings.
Package string exposes functionality for interpreting strings.
interpreter/value
Package value exposes functionality for interpreting a value.
Package value exposes functionality for interpreting a value.
fakes
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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