Add workers SDK API bits (#2159)
This commit is contained in:
1 parent
f6c4e3c896
commit
7c4f495c25
8 files changed
+611
-102
No files matched your search
@@ -0,0 +1,111 @@
|
|||||||
|
package workers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/hashicorp/boundary/api"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Option is a func that sets optional attributes for a call. This does not need
|
||||||
|
// to be used directly, but instead option arguments are built from the
|
||||||
|
// functions in this package. WithX options set a value to that given in the
|
||||||
|
// argument; DefaultX options indicate that the value should be set to its
|
||||||
|
// default. When an API call is made options are processed in ther order they
|
||||||
|
// appear in the function call, so for a given argument X, a succession of WithX
|
||||||
|
// or DefaultX calls will result in the last call taking effect.
|
||||||
|
type Option func(*options)
|
||||||
|
|
||||||
|
type options struct {
|
||||||
|
postMap map[string]interface{}
|
||||||
|
queryMap map[string]string
|
||||||
|
withAutomaticVersioning bool
|
||||||
|
withSkipCurlOutput bool
|
||||||
|
withFilter string
|
||||||
|
}
|
||||||
|
|
||||||
|
func getDefaultOptions() options {
|
||||||
|
return options{
|
||||||
|
postMap: make(map[string]interface{}),
|
||||||
|
queryMap: make(map[string]string),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getOpts(opt ...Option) (options, []api.Option) {
|
||||||
|
opts := getDefaultOptions()
|
||||||
|
for _, o := range opt {
|
||||||
|
if o != nil {
|
||||||
|
o(&opts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var apiOpts []api.Option
|
||||||
|
if opts.withSkipCurlOutput {
|
||||||
|
apiOpts = append(apiOpts, api.WithSkipCurlOutput(true))
|
||||||
|
}
|
||||||
|
if opts.withFilter != "" {
|
||||||
|
opts.queryMap["filter"] = opts.withFilter
|
||||||
|
}
|
||||||
|
return opts, apiOpts
|
||||||
|
}
|
||||||
|
|
||||||
|
// If set, and if the version is zero during an update, the API will perform a
|
||||||
|
// fetch to get the current version of the resource and populate it during the
|
||||||
|
// update call. This is convenient but opens up the possibility for subtle
|
||||||
|
// order-of-modification issues, so use carefully.
|
||||||
|
func WithAutomaticVersioning(enable bool) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.withAutomaticVersioning = enable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithSkipCurlOutput tells the API to not use the current call for cURL output.
|
||||||
|
// Useful for when we need to look up versions.
|
||||||
|
func WithSkipCurlOutput(skip bool) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.withSkipCurlOutput = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithFilter tells the API to filter the items returned using the provided
|
||||||
|
// filter term. The filter should be in a format supported by
|
||||||
|
// hashicorp/go-bexpr.
|
||||||
|
func WithFilter(filter string) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.withFilter = strings.TrimSpace(filter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithAddress(inAddress string) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["address"] = inAddress
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultAddress() Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["address"] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithDescription(inDescription string) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["description"] = inDescription
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultDescription() Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["description"] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithName(inName string) Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["name"] = inName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefaultName() Option {
|
||||||
|
return func(o *options) {
|
||||||
|
o.postMap["name"] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,310 @@
|
|||||||
|
// Code generated by "make api"; DO NOT EDIT.
|
||||||
|
package workers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/hashicorp/boundary/api"
|
||||||
|
"github.com/hashicorp/boundary/api/scopes"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Worker struct {
|
||||||
|
Id string `json:"id,omitempty"`
|
||||||
|
ScopeId string `json:"scope_id,omitempty"`
|
||||||
|
Scope *scopes.ScopeInfo `json:"scope,omitempty"`
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Description string `json:"description,omitempty"`
|
||||||
|
CreatedTime time.Time `json:"created_time,omitempty"`
|
||||||
|
UpdatedTime time.Time `json:"updated_time,omitempty"`
|
||||||
|
Version uint32 `json:"version,omitempty"`
|
||||||
|
Address string `json:"address,omitempty"`
|
||||||
|
CanonicalAddress string `json:"canonical_address,omitempty"`
|
||||||
|
Tags map[string][]string `json:"tags,omitempty"`
|
||||||
|
CanonicalTags map[string][]string `json:"canonical_tags,omitempty"`
|
||||||
|
LastStatusTime time.Time `json:"last_status_time,omitempty"`
|
||||||
|
WorkerConfig *WorkerConfig `json:"worker_config,omitempty"`
|
||||||
|
WorkerAuthToken string `json:"worker_auth_token,omitempty"`
|
||||||
|
ActiveConnectionCount uint32 `json:"active_connection_count,omitempty"`
|
||||||
|
AuthorizedActions []string `json:"authorized_actions,omitempty"`
|
||||||
|
|
||||||
|
response *api.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
type WorkerReadResult struct {
|
||||||
|
Item *Worker
|
||||||
|
response *api.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WorkerReadResult) GetItem() interface{} {
|
||||||
|
return n.Item
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WorkerReadResult) GetResponse() *api.Response {
|
||||||
|
return n.response
|
||||||
|
}
|
||||||
|
|
||||||
|
type WorkerCreateResult = WorkerReadResult
|
||||||
|
type WorkerUpdateResult = WorkerReadResult
|
||||||
|
|
||||||
|
type WorkerDeleteResult struct {
|
||||||
|
response *api.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetItem will always be nil for WorkerDeleteResult
|
||||||
|
func (n WorkerDeleteResult) GetItem() interface{} {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WorkerDeleteResult) GetResponse() *api.Response {
|
||||||
|
return n.response
|
||||||
|
}
|
||||||
|
|
||||||
|
type WorkerListResult struct {
|
||||||
|
Items []*Worker
|
||||||
|
response *api.Response
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WorkerListResult) GetItems() interface{} {
|
||||||
|
return n.Items
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WorkerListResult) GetResponse() *api.Response {
|
||||||
|
return n.response
|
||||||
|
}
|
||||||
|
|
||||||
|
// Client is a client for this collection
|
||||||
|
type Client struct {
|
||||||
|
client *api.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creates a new client for this collection. The submitted API client is cloned;
|
||||||
|
// modifications to it after generating this client will not have effect. If you
|
||||||
|
// need to make changes to the underlying API client, use ApiClient() to access
|
||||||
|
// it.
|
||||||
|
func NewClient(c *api.Client) *Client {
|
||||||
|
return &Client{client: c.Clone()}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApiClient returns the underlying API client
|
||||||
|
func (c *Client) ApiClient() *api.Client {
|
||||||
|
return c.client
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) CreateWorkerLed(ctx context.Context, workerAuthToken string, scopeId string, opt ...Option) (*WorkerCreateResult, error) {
|
||||||
|
if scopeId == "" {
|
||||||
|
return nil, fmt.Errorf("empty scopeId value passed into CreateWorkerLed request")
|
||||||
|
}
|
||||||
|
|
||||||
|
opts, apiOpts := getOpts(opt...)
|
||||||
|
|
||||||
|
if c.client == nil {
|
||||||
|
return nil, fmt.Errorf("nil client")
|
||||||
|
}
|
||||||
|
if workerAuthToken == "" {
|
||||||
|
return nil, fmt.Errorf("empty workerAuthToken value passed into CreateWorkerLed request")
|
||||||
|
} else {
|
||||||
|
opts.postMap["worker_auth_token"] = workerAuthToken
|
||||||
|
}
|
||||||
|
|
||||||
|
opts.postMap["scope_id"] = scopeId
|
||||||
|
|
||||||
|
req, err := c.client.NewRequest(ctx, "POST", "workers:create:worker-led", opts.postMap, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating CreateWorkerLed request: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opts.queryMap) > 0 {
|
||||||
|
q := url.Values{}
|
||||||
|
for k, v := range opts.queryMap {
|
||||||
|
q.Add(k, v)
|
||||||
|
}
|
||||||
|
req.URL.RawQuery = q.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error performing client request during CreateWorkerLed call: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
target := new(WorkerCreateResult)
|
||||||
|
target.Item = new(Worker)
|
||||||
|
apiErr, err := resp.Decode(target.Item)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error decoding CreateWorkerLed response: %w", err)
|
||||||
|
}
|
||||||
|
if apiErr != nil {
|
||||||
|
return nil, apiErr
|
||||||
|
}
|
||||||
|
target.response = resp
|
||||||
|
return target, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Read(ctx context.Context, id string, opt ...Option) (*WorkerReadResult, error) {
|
||||||
|
if id == "" {
|
||||||
|
return nil, fmt.Errorf("empty id value passed into Read request")
|
||||||
|
}
|
||||||
|
if c.client == nil {
|
||||||
|
return nil, fmt.Errorf("nil client")
|
||||||
|
}
|
||||||
|
|
||||||
|
opts, apiOpts := getOpts(opt...)
|
||||||
|
|
||||||
|
req, err := c.client.NewRequest(ctx, "GET", fmt.Sprintf("workers/%s", url.PathEscape(id)), nil, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating Read request: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opts.queryMap) > 0 {
|
||||||
|
q := url.Values{}
|
||||||
|
for k, v := range opts.queryMap {
|
||||||
|
q.Add(k, v)
|
||||||
|
}
|
||||||
|
req.URL.RawQuery = q.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := c.client.Do(req, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error performing client request during Read call: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
target := new(WorkerReadResult)
|
||||||
|
target.Item = new(Worker)
|
||||||
|
apiErr, err := resp.Decode(target.Item)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error decoding Read response: %w", err)
|
||||||
|
}
|
||||||
|
if apiErr != nil {
|
||||||
|
return nil, apiErr
|
||||||
|
}
|
||||||
|
target.response = resp
|
||||||
|
return target, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Update(ctx context.Context, id string, version uint32, opt ...Option) (*WorkerUpdateResult, error) {
|
||||||
|
if id == "" {
|
||||||
|
return nil, fmt.Errorf("empty id value passed into Update request")
|
||||||
|
}
|
||||||
|
if c.client == nil {
|
||||||
|
return nil, fmt.Errorf("nil client")
|
||||||
|
}
|
||||||
|
|
||||||
|
opts, apiOpts := getOpts(opt...)
|
||||||
|
|
||||||
|
opts.postMap["version"] = version
|
||||||
|
|
||||||
|
req, err := c.client.NewRequest(ctx, "PATCH", fmt.Sprintf("workers/%s", url.PathEscape(id)), opts.postMap, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating Update request: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opts.queryMap) > 0 {
|
||||||
|
q := url.Values{}
|
||||||
|
for k, v := range opts.queryMap {
|
||||||
|
q.Add(k, v)
|
||||||
|
}
|
||||||
|
req.URL.RawQuery = q.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error performing client request during Update call: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
target := new(WorkerUpdateResult)
|
||||||
|
target.Item = new(Worker)
|
||||||
|
apiErr, err := resp.Decode(target.Item)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error decoding Update response: %w", err)
|
||||||
|
}
|
||||||
|
if apiErr != nil {
|
||||||
|
return nil, apiErr
|
||||||
|
}
|
||||||
|
target.response = resp
|
||||||
|
return target, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) Delete(ctx context.Context, id string, opt ...Option) (*WorkerDeleteResult, error) {
|
||||||
|
if id == "" {
|
||||||
|
return nil, fmt.Errorf("empty id value passed into Delete request")
|
||||||
|
}
|
||||||
|
if c.client == nil {
|
||||||
|
return nil, fmt.Errorf("nil client")
|
||||||
|
}
|
||||||
|
|
||||||
|
opts, apiOpts := getOpts(opt...)
|
||||||
|
|
||||||
|
req, err := c.client.NewRequest(ctx, "DELETE", fmt.Sprintf("workers/%s", url.PathEscape(id)), nil, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating Delete request: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opts.queryMap) > 0 {
|
||||||
|
q := url.Values{}
|
||||||
|
for k, v := range opts.queryMap {
|
||||||
|
q.Add(k, v)
|
||||||
|
}
|
||||||
|
req.URL.RawQuery = q.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error performing client request during Delete call: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
apiErr, err := resp.Decode(nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error decoding Delete response: %w", err)
|
||||||
|
}
|
||||||
|
if apiErr != nil {
|
||||||
|
return nil, apiErr
|
||||||
|
}
|
||||||
|
|
||||||
|
target := &WorkerDeleteResult{
|
||||||
|
response: resp,
|
||||||
|
}
|
||||||
|
return target, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) List(ctx context.Context, scopeId string, opt ...Option) (*WorkerListResult, error) {
|
||||||
|
if scopeId == "" {
|
||||||
|
return nil, fmt.Errorf("empty scopeId value passed into List request")
|
||||||
|
}
|
||||||
|
if c.client == nil {
|
||||||
|
return nil, fmt.Errorf("nil client")
|
||||||
|
}
|
||||||
|
|
||||||
|
opts, apiOpts := getOpts(opt...)
|
||||||
|
opts.queryMap["scope_id"] = scopeId
|
||||||
|
|
||||||
|
req, err := c.client.NewRequest(ctx, "GET", "workers", nil, apiOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error creating List request: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opts.queryMap) > 0 {
|
||||||
|
q := url.Values{}
|
||||||
|
for k, v := range opts.queryMap {
|
||||||
|
q.Add(k, v)
|
||||||
|
}
|
||||||
|
req.URL.RawQuery = q.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := c.client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error performing client request during List call: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
target := new(WorkerListResult)
|
||||||
|
apiErr, err := resp.Decode(target)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error decoding List response: %w", err)
|
||||||
|
}
|
||||||
|
if apiErr != nil {
|
||||||
|
return nil, apiErr
|
||||||
|
}
|
||||||
|
target.response = resp
|
||||||
|
return target, nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Code generated by "make api"; DO NOT EDIT.
|
||||||
|
package workers
|
||||||
|
|
||||||
|
type WorkerConfig struct {
|
||||||
|
Address string `json:"address,omitempty"`
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Tags map[string][]string `json:"tags,omitempty"`
|
||||||
|
}
|
||||||
+102
-30
@@ -20,6 +20,7 @@ import (
|
|||||||
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/sessions"
|
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/sessions"
|
||||||
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/targets"
|
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/targets"
|
||||||
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/users"
|
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/users"
|
||||||
|
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/workers"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -34,6 +35,12 @@ type structureInfo struct {
|
|||||||
fields []fieldInfo
|
fields []fieldInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type requiredParam struct {
|
||||||
|
Name string
|
||||||
|
Typ string
|
||||||
|
PostType string
|
||||||
|
}
|
||||||
|
|
||||||
type fieldInfo struct {
|
type fieldInfo struct {
|
||||||
Name string
|
Name string
|
||||||
ProtoName string
|
ProtoName string
|
||||||
@@ -87,9 +94,8 @@ type structInfo struct {
|
|||||||
// useful to avoid collisions
|
// useful to avoid collisions
|
||||||
nameOverride string
|
nameOverride string
|
||||||
|
|
||||||
// typeOnCreate indicates that create will be creating a concrete
|
// extraRequiredParams allows adding extra required parameters to templates
|
||||||
// implementation of an abstract type and thus a type field is necessary
|
extraRequiredParams []requiredParam
|
||||||
typeOnCreate bool
|
|
||||||
|
|
||||||
// recursiveListing indicates that the collection supports recursion when
|
// recursiveListing indicates that the collection supports recursion when
|
||||||
// listing
|
// listing
|
||||||
@@ -149,7 +155,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "scopes/scope.gen.go",
|
outFile: "scopes/scope.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -185,7 +191,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "users/user.gen.go",
|
outFile: "users/user.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -213,7 +219,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "groups/group.gen.go",
|
outFile: "groups/group.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -251,7 +257,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "roles/role.gen.go",
|
outFile: "roles/role.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -293,14 +299,20 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "authmethods/authmethods.gen.go",
|
outFile: "authmethods/authmethods.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
listTemplate,
|
listTemplate,
|
||||||
},
|
},
|
||||||
pluralResourceName: "auth-methods",
|
pluralResourceName: "auth-methods",
|
||||||
typeOnCreate: true,
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "resourceType",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "type",
|
||||||
|
},
|
||||||
|
},
|
||||||
versionEnabled: true,
|
versionEnabled: true,
|
||||||
createResponseTypes: true,
|
createResponseTypes: true,
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
@@ -321,7 +333,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "accounts/account.gen.go",
|
outFile: "accounts/account.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -349,7 +361,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "managedgroups/managedgroups.gen.go",
|
outFile: "managedgroups/managedgroups.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -385,15 +397,21 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "credentialstores/credential_store.gen.go",
|
outFile: "credentialstores/credential_store.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
listTemplate,
|
listTemplate,
|
||||||
},
|
},
|
||||||
pluralResourceName: "credential-stores",
|
pluralResourceName: "credential-stores",
|
||||||
parentTypeName: "scope",
|
parentTypeName: "scope",
|
||||||
typeOnCreate: true,
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "resourceType",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "type",
|
||||||
|
},
|
||||||
|
},
|
||||||
versionEnabled: true,
|
versionEnabled: true,
|
||||||
createResponseTypes: true,
|
createResponseTypes: true,
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
@@ -424,7 +442,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "credentiallibraries/credential_library.gen.go",
|
outFile: "credentiallibraries/credential_library.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -446,15 +464,21 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "credentialstores/credential_store.gen.go",
|
outFile: "credentialstores/credential_store.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
listTemplate,
|
listTemplate,
|
||||||
},
|
},
|
||||||
pluralResourceName: "credential-stores",
|
pluralResourceName: "credential-stores",
|
||||||
parentTypeName: "scope",
|
parentTypeName: "scope",
|
||||||
typeOnCreate: true,
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "resourceType",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "type",
|
||||||
|
},
|
||||||
|
},
|
||||||
versionEnabled: true,
|
versionEnabled: true,
|
||||||
createResponseTypes: true,
|
createResponseTypes: true,
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
@@ -485,7 +509,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "credentiallibraries/credential_library.gen.go",
|
outFile: "credentiallibraries/credential_library.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -502,7 +526,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "hostcatalogs/host_catalog.gen.go",
|
outFile: "hostcatalogs/host_catalog.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -523,8 +547,14 @@ var inputStructs = []*structInfo{
|
|||||||
SkipDefault: true,
|
SkipDefault: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pluralResourceName: "host-catalogs",
|
pluralResourceName: "host-catalogs",
|
||||||
typeOnCreate: true,
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "resourceType",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "type",
|
||||||
|
},
|
||||||
|
},
|
||||||
versionEnabled: true,
|
versionEnabled: true,
|
||||||
createResponseTypes: true,
|
createResponseTypes: true,
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
@@ -534,7 +564,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "hosts/host.gen.go",
|
outFile: "hosts/host.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -555,7 +585,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "hostsets/host_set.gen.go",
|
outFile: "hostsets/host_set.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -622,7 +652,7 @@ var inputStructs = []*structInfo{
|
|||||||
outFile: "targets/target.gen.go",
|
outFile: "targets/target.gen.go",
|
||||||
templates: []*template.Template{
|
templates: []*template.Template{
|
||||||
clientTemplate,
|
clientTemplate,
|
||||||
createTemplate,
|
commonCreateTemplate,
|
||||||
readTemplate,
|
readTemplate,
|
||||||
updateTemplate,
|
updateTemplate,
|
||||||
deleteTemplate,
|
deleteTemplate,
|
||||||
@@ -676,8 +706,14 @@ var inputStructs = []*structInfo{
|
|||||||
FieldType: "[]string",
|
FieldType: "[]string",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
versionEnabled: true,
|
versionEnabled: true,
|
||||||
typeOnCreate: true,
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "resourceType",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "type",
|
||||||
|
},
|
||||||
|
},
|
||||||
createResponseTypes: true,
|
createResponseTypes: true,
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
},
|
},
|
||||||
@@ -702,4 +738,40 @@ var inputStructs = []*structInfo{
|
|||||||
fieldFilter: []string{"private_key"},
|
fieldFilter: []string{"private_key"},
|
||||||
recursiveListing: true,
|
recursiveListing: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
inProto: &workers.Worker{},
|
||||||
|
outFile: "workers/worker.gen.go",
|
||||||
|
templates: []*template.Template{
|
||||||
|
clientTemplate,
|
||||||
|
template.Must(template.New("").Funcs(
|
||||||
|
template.FuncMap{
|
||||||
|
"snakeCase": snakeCase,
|
||||||
|
"funcName": func() string {
|
||||||
|
return "CreateWorkerLed"
|
||||||
|
},
|
||||||
|
"apiAction": func() string {
|
||||||
|
return ":create:worker-led"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).Parse(createTemplateStr)),
|
||||||
|
readTemplate,
|
||||||
|
updateTemplate,
|
||||||
|
deleteTemplate,
|
||||||
|
listTemplate,
|
||||||
|
},
|
||||||
|
extraRequiredParams: []requiredParam{
|
||||||
|
{
|
||||||
|
Name: "workerAuthToken",
|
||||||
|
Typ: "string",
|
||||||
|
PostType: "worker_auth_token",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pluralResourceName: "workers",
|
||||||
|
createResponseTypes: true,
|
||||||
|
recursiveListing: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
inProto: &workers.WorkerConfig{},
|
||||||
|
outFile: "workers/worker_config.gen.go",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ func parsePBs() {
|
|||||||
name = fmt.Sprintf("%s.%s", pkg, name)
|
name = fmt.Sprintf("%s.%s", pkg, name)
|
||||||
}
|
}
|
||||||
switch name {
|
switch name {
|
||||||
case "v1.AuthorizedCollectionActionsEntry":
|
case "v1.AuthorizedCollectionActionsEntry", "v1.CanonicalTagsEntry", "v1.TagsEntry":
|
||||||
fi.FieldType = "map[string][]string"
|
fi.FieldType = "map[string][]string"
|
||||||
default:
|
default:
|
||||||
fi.FieldType = sliceText + ptr + name
|
fi.FieldType = sliceText + ptr + name
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ type templateInput struct {
|
|||||||
SliceSubtypes map[string]sliceSubtypeInfo
|
SliceSubtypes map[string]sliceSubtypeInfo
|
||||||
ExtraFields []fieldInfo
|
ExtraFields []fieldInfo
|
||||||
VersionEnabled bool
|
VersionEnabled bool
|
||||||
TypeOnCreate bool
|
ExtraRequiredParams []requiredParam
|
||||||
CreateResponseTypes bool
|
CreateResponseTypes bool
|
||||||
RecursiveListing bool
|
RecursiveListing bool
|
||||||
}
|
}
|
||||||
@@ -65,7 +65,7 @@ func fillTemplates() {
|
|||||||
ParentTypeName: in.parentTypeName,
|
ParentTypeName: in.parentTypeName,
|
||||||
ExtraFields: in.extraFields,
|
ExtraFields: in.extraFields,
|
||||||
VersionEnabled: in.versionEnabled,
|
VersionEnabled: in.versionEnabled,
|
||||||
TypeOnCreate: in.typeOnCreate,
|
ExtraRequiredParams: in.extraRequiredParams,
|
||||||
CreateResponseTypes: in.createResponseTypes,
|
CreateResponseTypes: in.createResponseTypes,
|
||||||
RecursiveListing: in.recursiveListing,
|
RecursiveListing: in.recursiveListing,
|
||||||
}
|
}
|
||||||
@@ -346,14 +346,10 @@ func (c *Client) Delete(ctx context.Context, id string, opt... Option) (*{{ .Nam
|
|||||||
}
|
}
|
||||||
`))
|
`))
|
||||||
|
|
||||||
var createTemplate = template.Must(template.New("").Funcs(
|
const createTemplateStr = `
|
||||||
template.FuncMap{
|
func (c *Client) {{ funcName }} (ctx context.Context, {{ range .ExtraRequiredParams }} {{ .Name }} {{ .Typ }}, {{ end }} {{ .CollectionFunctionArg }} string, opt... Option) (*{{ .Name }}CreateResult, error) {
|
||||||
"snakeCase": snakeCase,
|
|
||||||
},
|
|
||||||
).Parse(`
|
|
||||||
func (c *Client) Create (ctx context.Context, {{ if .TypeOnCreate }} resourceType string, {{ end }} {{ .CollectionFunctionArg }} string, opt... Option) (*{{ .Name }}CreateResult, error) {
|
|
||||||
if {{ .CollectionFunctionArg }} == "" {
|
if {{ .CollectionFunctionArg }} == "" {
|
||||||
return nil, fmt.Errorf("empty {{ .CollectionFunctionArg }} value passed into Create request")
|
return nil, fmt.Errorf("empty {{ .CollectionFunctionArg }} value passed into {{ funcName }} request")
|
||||||
}
|
}
|
||||||
|
|
||||||
opts, apiOpts := getOpts(opt...)
|
opts, apiOpts := getOpts(opt...)
|
||||||
@@ -361,17 +357,17 @@ func (c *Client) Create (ctx context.Context, {{ if .TypeOnCreate }} resourceTyp
|
|||||||
if c.client == nil {
|
if c.client == nil {
|
||||||
return nil, fmt.Errorf("nil client")
|
return nil, fmt.Errorf("nil client")
|
||||||
}
|
}
|
||||||
{{ if .TypeOnCreate }} if resourceType == "" {
|
{{ range .ExtraRequiredParams }} if {{ .Name }} == "" {
|
||||||
return nil, fmt.Errorf("empty resourceType value passed into Create request")
|
return nil, fmt.Errorf("empty {{ .Name }} value passed into {{ funcName }} request")
|
||||||
} else {
|
} else {
|
||||||
opts.postMap["type"] = resourceType
|
opts.postMap["{{ .PostType }}"] = {{ .Name }}
|
||||||
}{{ end }}
|
}{{ end }}
|
||||||
|
|
||||||
opts.postMap["{{ snakeCase .CollectionFunctionArg }}"] = {{ .CollectionFunctionArg }}
|
opts.postMap["{{ snakeCase .CollectionFunctionArg }}"] = {{ .CollectionFunctionArg }}
|
||||||
|
|
||||||
req, err := c.client.NewRequest(ctx, "POST", "{{ .CollectionPath }}", opts.postMap, apiOpts...)
|
req, err := c.client.NewRequest(ctx, "POST", "{{ .CollectionPath }}{{ apiAction }}", opts.postMap, apiOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating Create request: %w", err)
|
return nil, fmt.Errorf("error creating {{ funcName }} request: %w", err)
|
||||||
}
|
}
|
||||||
{{ if ( eq .CollectionPath "\"scopes\"" ) }}
|
{{ if ( eq .CollectionPath "\"scopes\"" ) }}
|
||||||
opts.queryMap["scope_id"] = scopeId
|
opts.queryMap["scope_id"] = scopeId
|
||||||
@@ -386,14 +382,14 @@ func (c *Client) Create (ctx context.Context, {{ if .TypeOnCreate }} resourceTyp
|
|||||||
|
|
||||||
resp, err := c.client.Do(req)
|
resp, err := c.client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error performing client request during Create call: %w", err)
|
return nil, fmt.Errorf("error performing client request during {{ funcName }} call: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
target := new({{ .Name }}CreateResult)
|
target := new({{ .Name }}CreateResult)
|
||||||
target.Item = new({{ .Name }})
|
target.Item = new({{ .Name }})
|
||||||
apiErr, err := resp.Decode(target.Item)
|
apiErr, err := resp.Decode(target.Item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error decoding Create response: %w", err)
|
return nil, fmt.Errorf("error decoding {{ funcName }} response: %w", err)
|
||||||
}
|
}
|
||||||
if apiErr != nil {
|
if apiErr != nil {
|
||||||
return nil, apiErr
|
return nil, apiErr
|
||||||
@@ -401,7 +397,19 @@ func (c *Client) Create (ctx context.Context, {{ if .TypeOnCreate }} resourceTyp
|
|||||||
target.response = resp
|
target.response = resp
|
||||||
return target, nil
|
return target, nil
|
||||||
}
|
}
|
||||||
`))
|
`
|
||||||
|
|
||||||
|
var commonCreateTemplate = template.Must(template.New("").Funcs(
|
||||||
|
template.FuncMap{
|
||||||
|
"snakeCase": snakeCase,
|
||||||
|
"funcName": func() string {
|
||||||
|
return "Create"
|
||||||
|
},
|
||||||
|
"apiAction": func() string {
|
||||||
|
return ""
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).Parse(createTemplateStr))
|
||||||
|
|
||||||
var updateTemplate = template.Must(template.New("").Parse(`
|
var updateTemplate = template.Must(template.New("").Parse(`
|
||||||
func (c *Client) Update(ctx context.Context, id string, version uint32, opt... Option) (*{{ .Name }}UpdateResult, error) {
|
func (c *Client) Update(ctx context.Context, id string, version uint32, opt... Option) (*{{ .Name }}UpdateResult, error) {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ message Worker {
|
|||||||
// Output only. This is the address used by authorized session. The value
|
// Output only. This is the address used by authorized session. The value
|
||||||
// is the same as the address field if set. Otherwise it uses the address the
|
// is the same as the address field if set. Otherwise it uses the address the
|
||||||
// worker reports.
|
// worker reports.
|
||||||
string canonical_address = 100; // @gotags: `class:"public"`
|
string canonical_address = 100 [json_name = "canonical_address"]; // @gotags: `class:"public"`
|
||||||
|
|
||||||
// Output only. The tags attached to this worker.
|
// Output only. The tags attached to this worker.
|
||||||
map<string, google.protobuf.ListValue> tags = 110; // @gotags: `class:"public"`
|
map<string, google.protobuf.ListValue> tags = 110; // @gotags: `class:"public"`
|
||||||
@@ -81,7 +81,7 @@ message Worker {
|
|||||||
// Output only. The deduplicated union of the tags reported by the worker and
|
// Output only. The deduplicated union of the tags reported by the worker and
|
||||||
// the tags added through the user facing api. This is used when applying
|
// the tags added through the user facing api. This is used when applying
|
||||||
// worker filters.
|
// worker filters.
|
||||||
map<string, google.protobuf.ListValue> canonical_tags = 120; // @gotags: `class:"public"`
|
map<string, google.protobuf.ListValue> canonical_tags = 120 [json_name = "canonical_tags"]; // @gotags: `class:"public"`
|
||||||
|
|
||||||
// Output only. The time this worker daemon last reported its status.
|
// Output only. The time this worker daemon last reported its status.
|
||||||
google.protobuf.Timestamp last_status_time = 130 [json_name = "last_status_time"]; // @gotags: `class:"public"`
|
google.protobuf.Timestamp last_status_time = 130 [json_name = "last_status_time"]; // @gotags: `class:"public"`
|
||||||
|
|||||||
@@ -120,13 +120,13 @@ type Worker struct {
|
|||||||
// Output only. This is the address used by authorized session. The value
|
// Output only. This is the address used by authorized session. The value
|
||||||
// is the same as the address field if set. Otherwise it uses the address the
|
// is the same as the address field if set. Otherwise it uses the address the
|
||||||
// worker reports.
|
// worker reports.
|
||||||
CanonicalAddress string `protobuf:"bytes,100,opt,name=canonical_address,json=canonicalAddress,proto3" json:"canonical_address,omitempty" class:"public"` // @gotags: `class:"public"`
|
CanonicalAddress string `protobuf:"bytes,100,opt,name=canonical_address,proto3" json:"canonical_address,omitempty" class:"public"` // @gotags: `class:"public"`
|
||||||
// Output only. The tags attached to this worker.
|
// Output only. The tags attached to this worker.
|
||||||
Tags map[string]*structpb.ListValue `protobuf:"bytes,110,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"`
|
Tags map[string]*structpb.ListValue `protobuf:"bytes,110,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"`
|
||||||
// Output only. The deduplicated union of the tags reported by the worker and
|
// Output only. The deduplicated union of the tags reported by the worker and
|
||||||
// the tags added through the user facing api. This is used when applying
|
// the tags added through the user facing api. This is used when applying
|
||||||
// worker filters.
|
// worker filters.
|
||||||
CanonicalTags map[string]*structpb.ListValue `protobuf:"bytes,120,rep,name=canonical_tags,json=canonicalTags,proto3" json:"canonical_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"`
|
CanonicalTags map[string]*structpb.ListValue `protobuf:"bytes,120,rep,name=canonical_tags,proto3" json:"canonical_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" class:"public"` // @gotags: `class:"public"`
|
||||||
// Output only. The time this worker daemon last reported its status.
|
// Output only. The time this worker daemon last reported its status.
|
||||||
LastStatusTime *timestamppb.Timestamp `protobuf:"bytes,130,opt,name=last_status_time,proto3" json:"last_status_time,omitempty" class:"public"` // @gotags: `class:"public"`
|
LastStatusTime *timestamppb.Timestamp `protobuf:"bytes,130,opt,name=last_status_time,proto3" json:"last_status_time,omitempty" class:"public"` // @gotags: `class:"public"`
|
||||||
// Output only. The set of information the worker daemon has reported about
|
// Output only. The set of information the worker daemon has reported about
|
||||||
@@ -328,7 +328,7 @@ var file_controller_api_resources_workers_v1_worker_proto_rawDesc = []byte{
|
|||||||
0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||||
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||||
0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
|
0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
|
||||||
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x81, 0x0a, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b,
|
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x0a, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b,
|
||||||
0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
|
0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
|
||||||
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14,
|
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14,
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x43,
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x43,
|
||||||
@@ -361,60 +361,60 @@ var file_controller_api_resources_workers_v1_worker_proto_rawDesc = []byte{
|
|||||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
|
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
|
||||||
0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd,
|
0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd,
|
||||||
0x29, 0x12, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x07, 0x61, 0x64, 0x64,
|
0x29, 0x12, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x07, 0x61, 0x64, 0x64,
|
||||||
0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a,
|
0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a,
|
||||||
0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
|
0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
|
||||||
0x73, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69,
|
0x73, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69,
|
||||||
0x63, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x61,
|
0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x04, 0x74,
|
||||||
0x67, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72,
|
0x61, 0x67, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
|
||||||
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75,
|
||||||
0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57,
|
0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e,
|
||||||
0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
|
0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
||||||
0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x65, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63,
|
0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x66, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69,
|
||||||
0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x78, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e,
|
0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x78, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e,
|
||||||
0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72,
|
0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e,
|
||||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73,
|
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72,
|
||||||
0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e,
|
0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x6f,
|
||||||
0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63,
|
0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e,
|
||||||
0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x10,
|
0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x12, 0x47,
|
||||||
0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65,
|
0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69,
|
||||||
0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
0x6d, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
|
||||||
0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
|
0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74,
|
||||||
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f,
|
0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65,
|
||||||
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
|
0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||||
0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72,
|
0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69,
|
||||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73,
|
0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65,
|
||||||
0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
|
||||||
0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
|
0x69, 0x67, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
|
||||||
0x4b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74,
|
0x67, 0x12, 0x4b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68,
|
||||||
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
|
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
|
||||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74,
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||||
0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65,
|
0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x77, 0x6f, 0x72,
|
||||||
0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x17,
|
0x6b, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39,
|
||||||
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
|
||||||
0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17,
|
0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0d,
|
||||||
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
|
||||||
0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f,
|
0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x12, 0x61, 0x75, 0x74,
|
||||||
0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xac, 0x02,
|
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
|
||||||
0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
|
0xac, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a,
|
||||||
0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73,
|
0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, 0x0a, 0x09, 0x54, 0x61,
|
||||||
|
0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
|
||||||
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c,
|
||||||
|
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||||
|
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
|
||||||
|
0x5c, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73,
|
||||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
|
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
|
||||||
0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a,
|
0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x50, 0x5a,
|
||||||
0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e,
|
0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68,
|
||||||
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73,
|
||||||
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
|
0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65,
|
||||||
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f,
|
||||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
|
0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x3b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x62,
|
||||||
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x50, 0x5a, 0x4e, 0x67,
|
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63,
|
|
||||||
0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x64, 0x6b,
|
|
||||||
0x2f, 0x70, 0x62, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f,
|
|
||||||
0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x77, 0x6f,
|
|
||||||
0x72, 0x6b, 0x65, 0x72, 0x73, 0x3b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x62, 0x06, 0x70,
|
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
Reference in new issue
Block a user