nifi

package
v0.0.0-...-d1cc358 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2019 License: MIT Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConnectionFromSchema

func ConnectionFromSchema(d *schema.ResourceData, connection *Connection) error

func ConnectionToSchema

func ConnectionToSchema(d *schema.ResourceData, connection *Connection) error

func ControllerServiceFromSchema

func ControllerServiceFromSchema(d *schema.ResourceData, controllerService *ControllerService) error

func ControllerServiceToSchema

func ControllerServiceToSchema(d *schema.ResourceData, controllerService *ControllerService) error

func FunnelFromSchema

func FunnelFromSchema(meta interface{}, d *schema.ResourceData, funnel *Funnel) error

func FunnelToSchema

func FunnelToSchema(d *schema.ResourceData, funnel *Funnel) error

func GroupFromSchema

func GroupFromSchema(meta interface{}, d *schema.ResourceData, group *Group) error

func GroupToSchema

func GroupToSchema(d *schema.ResourceData, group *Group) error

func PortFromSchema

func PortFromSchema(d *schema.ResourceData, port *Port) error

func PortToSchema

func PortToSchema(d *schema.ResourceData, port *Port) error

func ProcessGroupFromSchema

func ProcessGroupFromSchema(d *schema.ResourceData, processGroup *ProcessGroup) error

func ProcessGroupToSchema

func ProcessGroupToSchema(d *schema.ResourceData, processGroup *ProcessGroup) error

func ProcessorFromSchema

func ProcessorFromSchema(d *schema.ResourceData, processor *Processor) error

func ProcessorRemoveOverlappingConnections

func ProcessorRemoveOverlappingConnections(client *Client, processor *Processor) error

func ProcessorToSchema

func ProcessorToSchema(d *schema.ResourceData, processor *Processor) error

func Provider

func Provider() terraform.ResourceProvider

Provider returns a terraform.ResourceProvider.

func RemoteProcessGroupFromSchema

func RemoteProcessGroupFromSchema(d *schema.ResourceData, processGroup *RemoteProcessGroup) error

func RemoteProcessGroupToSchema

func RemoteProcessGroupToSchema(d *schema.ResourceData, processGroup *RemoteProcessGroup) error

func ReportingTaskFromSchema

func ReportingTaskFromSchema(d *schema.ResourceData, reportingTask *ReportingTask) error

func ReportingTaskToSchema

func ReportingTaskToSchema(d *schema.ResourceData, reportingTask *ReportingTask) error

func ResourceConnection

func ResourceConnection() *schema.Resource

func ResourceConnectionCreate

func ResourceConnectionCreate(d *schema.ResourceData, meta interface{}) error

func ResourceConnectionDelete

func ResourceConnectionDelete(d *schema.ResourceData, meta interface{}) error

func ResourceConnectionDeleteInternal

func ResourceConnectionDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourceConnectionExists

func ResourceConnectionExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceConnectionRead

func ResourceConnectionRead(d *schema.ResourceData, meta interface{}) error

func ResourceConnectionUpdate

func ResourceConnectionUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceConnectionUpdateInternal

func ResourceConnectionUpdateInternal(d *schema.ResourceData, meta interface{}) error

func ResourceControllerService

func ResourceControllerService() *schema.Resource

func ResourceControllerServiceCreate

func ResourceControllerServiceCreate(d *schema.ResourceData, meta interface{}) error

func ResourceControllerServiceDelete

func ResourceControllerServiceDelete(d *schema.ResourceData, meta interface{}) error

func ResourceControllerServiceExists

func ResourceControllerServiceExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceControllerServiceRead

func ResourceControllerServiceRead(d *schema.ResourceData, meta interface{}) error

func ResourceControllerServiceUpdate

func ResourceControllerServiceUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceFunnel

func ResourceFunnel() *schema.Resource

func ResourceFunnelCreate

func ResourceFunnelCreate(d *schema.ResourceData, meta interface{}) error

func ResourceFunnelDelete

func ResourceFunnelDelete(d *schema.ResourceData, meta interface{}) error

func ResourceFunnelDeleteInternal

func ResourceFunnelDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourceFunnelExists

func ResourceFunnelExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceFunnelRead

func ResourceFunnelRead(d *schema.ResourceData, meta interface{}) error

func ResourceFunnelUpdate

func ResourceFunnelUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceFunnelUpdateInternal

func ResourceFunnelUpdateInternal(d *schema.ResourceData, meta interface{}) error

func ResourceGroup

func ResourceGroup() *schema.Resource

func ResourceGroupCreate

func ResourceGroupCreate(d *schema.ResourceData, meta interface{}) error

func ResourceGroupDelete

func ResourceGroupDelete(d *schema.ResourceData, meta interface{}) error

func ResourceGroupDeleteInternal

func ResourceGroupDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourceGroupExists

func ResourceGroupExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceGroupRead

func ResourceGroupRead(d *schema.ResourceData, meta interface{}) error

func ResourceGroupUpdate

func ResourceGroupUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceGroupUpdateInternal

func ResourceGroupUpdateInternal(d *schema.ResourceData, meta interface{}) error

func ResourcePort

func ResourcePort() *schema.Resource

func ResourcePortCreate

func ResourcePortCreate(d *schema.ResourceData, meta interface{}) error

func ResourcePortDelete

func ResourcePortDelete(d *schema.ResourceData, meta interface{}) error

func ResourcePortDeleteInternal

func ResourcePortDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourcePortExists

func ResourcePortExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourcePortRead

func ResourcePortRead(d *schema.ResourceData, meta interface{}) error

func ResourcePortUpdate

func ResourcePortUpdate(d *schema.ResourceData, meta interface{}) error

func ResourcePortUpdateInternal

func ResourcePortUpdateInternal(d *schema.ResourceData, meta interface{}) error

func ResourceProcessGroup

func ResourceProcessGroup() *schema.Resource

func ResourceProcessGroupCreate

func ResourceProcessGroupCreate(d *schema.ResourceData, meta interface{}) error

func ResourceProcessGroupDelete

func ResourceProcessGroupDelete(d *schema.ResourceData, meta interface{}) error

func ResourceProcessGroupExists

func ResourceProcessGroupExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceProcessGroupRead

func ResourceProcessGroupRead(d *schema.ResourceData, meta interface{}) error

func ResourceProcessGroupUpdate

func ResourceProcessGroupUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceProcessor

func ResourceProcessor() *schema.Resource

func ResourceProcessorCreate

func ResourceProcessorCreate(d *schema.ResourceData, meta interface{}) error

func ResourceProcessorDelete

func ResourceProcessorDelete(d *schema.ResourceData, meta interface{}) error

func ResourceProcessorDeleteInternal

func ResourceProcessorDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourceProcessorExists

func ResourceProcessorExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceProcessorRead

func ResourceProcessorRead(d *schema.ResourceData, meta interface{}) error

func ResourceProcessorUpdate

func ResourceProcessorUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceProcessorUpdateInternal

func ResourceProcessorUpdateInternal(d *schema.ResourceData, meta interface{}) error

func ResourceRemoteProcessGroup

func ResourceRemoteProcessGroup() *schema.Resource

func ResourceRemoteProcessGroupCreate

func ResourceRemoteProcessGroupCreate(d *schema.ResourceData, meta interface{}) error

func ResourceRemoteProcessGroupDelete

func ResourceRemoteProcessGroupDelete(d *schema.ResourceData, meta interface{}) error

func ResourceRemoteProcessGroupExists

func ResourceRemoteProcessGroupExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceRemoteProcessGroupRead

func ResourceRemoteProcessGroupRead(d *schema.ResourceData, meta interface{}) error

func ResourceRemoteProcessGroupUpdate

func ResourceRemoteProcessGroupUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceReportingTask

func ResourceReportingTask() *schema.Resource

func ResourceReportingTaskCreate

func ResourceReportingTaskCreate(d *schema.ResourceData, meta interface{}) error

func ResourceReportingTaskDelete

func ResourceReportingTaskDelete(d *schema.ResourceData, meta interface{}) error

func ResourceReportingTaskExists

func ResourceReportingTaskExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceReportingTaskRead

func ResourceReportingTaskRead(d *schema.ResourceData, meta interface{}) error

func ResourceReportingTaskUpdate

func ResourceReportingTaskUpdate(d *schema.ResourceData, meta interface{}) error

func ResourceUser

func ResourceUser() *schema.Resource

func ResourceUserCreate

func ResourceUserCreate(d *schema.ResourceData, meta interface{}) error

func ResourceUserDelete

func ResourceUserDelete(d *schema.ResourceData, meta interface{}) error

func ResourceUserDeleteInternal

func ResourceUserDeleteInternal(d *schema.ResourceData, meta interface{}) error

func ResourceUserExists

func ResourceUserExists(d *schema.ResourceData, meta interface{}) (bool, error)

func ResourceUserRead

func ResourceUserRead(d *schema.ResourceData, meta interface{}) error

func ResourceUserUpdate

func ResourceUserUpdate(d *schema.ResourceData, meta interface{}) error

func SchemaParentGroupId

func SchemaParentGroupId() *schema.Schema

func SchemaPosition

func SchemaPosition() *schema.Schema

func SchemaRevision

func SchemaRevision() *schema.Schema

func UserFromSchema

func UserFromSchema(d *schema.ResourceData, user *User) error

func UserToSchema

func UserToSchema(d *schema.ResourceData, user *User) error

Types

type Client

type Client struct {
	Config     Config
	Client     *http.Client
	HttpScheme string
	// The mutex is used by the plugin to prevent parallel execution of some update/delete operations.
	// There are scenarios when updating a connection involves modifying related processors and vice versa.
	// This breaks Terraform model to some extent but at the same time is unavoidable in NiFi world.
	// Currently only flows that involve cross-resource interactions are wrapped into lock/unlock sections.
	// Most of operations can still be performed in parallel.
	Lock sync.Mutex
}

func NewClient

func NewClient(config Config) *Client

func (*Client) CleanupNilProperties

func (c *Client) CleanupNilProperties(properties map[string]interface{}) error

func (*Client) CreateConnection

func (c *Client) CreateConnection(connection *Connection) error

func (*Client) CreateControllerService

func (c *Client) CreateControllerService(controllerService *ControllerService) error

func (*Client) CreateFunnel

func (c *Client) CreateFunnel(funel *Funnel) error

func (*Client) CreateGroup

func (c *Client) CreateGroup(group *Group) error

func (*Client) CreatePort

func (c *Client) CreatePort(port *Port) error

func (*Client) CreateProcessGroup

func (c *Client) CreateProcessGroup(processGroup *ProcessGroup) error

func (*Client) CreateProcessor

func (c *Client) CreateProcessor(processor *Processor) error

func (*Client) CreateRemoteProcessGroup

func (c *Client) CreateRemoteProcessGroup(processGroup *RemoteProcessGroup) error

func (*Client) CreateReportingTask

func (c *Client) CreateReportingTask(reportingTask *ReportingTask) error

func (*Client) CreateUser

func (c *Client) CreateUser(user *User) error

func (*Client) DeleteConnection

func (c *Client) DeleteConnection(connection *Connection) error

func (*Client) DeleteControllerService

func (c *Client) DeleteControllerService(controllerService *ControllerService) error

func (*Client) DeleteFunnel

func (c *Client) DeleteFunnel(funnel *Funnel) error

func (*Client) DeleteGroup

func (c *Client) DeleteGroup(group *Group) error

func (*Client) DeletePort

func (c *Client) DeletePort(port *Port) error

func (*Client) DeleteProcessGroup

func (c *Client) DeleteProcessGroup(processGroup *ProcessGroup) error

func (*Client) DeleteProcessor

func (c *Client) DeleteProcessor(processor *Processor) error

func (*Client) DeleteRemoteProcessGroup

func (c *Client) DeleteRemoteProcessGroup(processGroup *RemoteProcessGroup) error

func (*Client) DeleteReportingTask

func (c *Client) DeleteReportingTask(reportingTask *ReportingTask) error

func (*Client) DeleteUser

func (c *Client) DeleteUser(user *User) error

func (*Client) DisableControllerService

func (c *Client) DisableControllerService(controllerService *ControllerService) error

func (*Client) DisablePort

func (c *Client) DisablePort(port *Port) error

func (*Client) DropConnectionData

func (c *Client) DropConnectionData(connection *Connection) error

func (*Client) EnableControllerService

func (c *Client) EnableControllerService(controllerService *ControllerService) error

func (*Client) GetConnection

func (c *Client) GetConnection(connectionId string) (*Connection, error)

func (*Client) GetControllerService

func (c *Client) GetControllerService(controllerServiceId string) (*ControllerService, error)

func (*Client) GetFunnel

func (c *Client) GetFunnel(funnelId string) (*Funnel, error)

func (*Client) GetGroup

func (c *Client) GetGroup(groupId string) (*Group, error)

func (*Client) GetGroupIdsWithIdentity

func (c *Client) GetGroupIdsWithIdentity(groupIden string) ([]string, error)

func (*Client) GetPort

func (c *Client) GetPort(portId string, port_type string) (*Port, error)

func (*Client) GetProcessGroup

func (c *Client) GetProcessGroup(processGroupId string) (*ProcessGroup, error)

func (*Client) GetProcessGroupConnections

func (c *Client) GetProcessGroupConnections(processGroupId string) (*Connections, error)

func (*Client) GetProcessor

func (c *Client) GetProcessor(processorId string) (*Processor, error)

func (*Client) GetRemoteProcessGroup

func (c *Client) GetRemoteProcessGroup(processGroupId string) (*RemoteProcessGroup, error)

func (*Client) GetReportingTask

func (c *Client) GetReportingTask(reportingTaskId string) (*ReportingTask, error)

func (*Client) GetUser

func (c *Client) GetUser(userId string) (*User, error)

func (*Client) GetUserIdsWithIdentity

func (c *Client) GetUserIdsWithIdentity(userIden string) ([]string, error)

func (*Client) JsonCall

func (c *Client) JsonCall(method string, url string, bodyIn interface{}, bodyOut interface{}) (int, error)

func (*Client) SetControllerServiceState

func (c *Client) SetControllerServiceState(controllerService *ControllerService, state string) error

func (*Client) SetPortState

func (c *Client) SetPortState(port *Port, state string) error

func (*Client) SetProcessorState

func (c *Client) SetProcessorState(processor *Processor, state string) error

func (*Client) StartConnectionHand

func (c *Client) StartConnectionHand(connectionHand *ConnectionHand) error

func (*Client) StartPort

func (c *Client) StartPort(port *Port) error

func (*Client) StartProcessor

func (c *Client) StartProcessor(processor *Processor) error

func (*Client) StopConnectionHand

func (c *Client) StopConnectionHand(connectionHand *ConnectionHand) error

func (*Client) StopPort

func (c *Client) StopPort(port *Port) error

func (*Client) StopProcessor

func (c *Client) StopProcessor(processor *Processor) error

func (*Client) UpdateConnection

func (c *Client) UpdateConnection(connection *Connection) error

func (*Client) UpdateControllerService

func (c *Client) UpdateControllerService(controllerService *ControllerService) error

func (*Client) UpdateFunnel

func (c *Client) UpdateFunnel(funnel *Funnel) error

func (*Client) UpdateGroup

func (c *Client) UpdateGroup(group *Group) error

func (*Client) UpdatePort

func (c *Client) UpdatePort(port *Port) error

func (*Client) UpdateProcessGroup

func (c *Client) UpdateProcessGroup(processGroup *ProcessGroup) error

func (*Client) UpdateProcessor

func (c *Client) UpdateProcessor(processor *Processor) error

func (*Client) UpdateRemoteProcessGroup

func (c *Client) UpdateRemoteProcessGroup(processGroup *RemoteProcessGroup) error

func (*Client) UpdateReportingTask

func (c *Client) UpdateReportingTask(reportingTask *ReportingTask) error

type Config

type Config struct {
	Host          string
	ApiPath       string
	AdminCertPath string
	AdminKeyPath  string
	HttpScheme    string
}

Config is the structure that stores the configuration to talk to a NiFi API compatible host.

type Connection

type Connection struct {
	Revision  Revision            `json:"revision"`
	Component ConnectionComponent `json:"component"`
}

type ConnectionComponent

type ConnectionComponent struct {
	Id                            string         `json:"id,omitempty"`
	ParentGroupId                 string         `json:"parentGroupId"`
	BackPressureDataSizeThreshold string         `json:"backPressureDataSizeThreshold"`
	BackPressureObjectThreshold   int            `json:"backPressureObjectThreshold"`
	Source                        ConnectionHand `json:"source"`
	Destination                   ConnectionHand `json:"destination"`
	SelectedRelationships         []string       `json:"selectedRelationships"`
	Bends                         []Position     `json:"bends"`
}

type ConnectionDropRequest

type ConnectionDropRequest struct {
	DropRequest struct {
		Id       string `json:"id"`
		Finished bool   `json:"finished"`
	} `json:"dropRequest"`
}

type ConnectionHand

type ConnectionHand struct {
	Type    string `json:"type"`
	Id      string `json:"id"`
	GroupId string `json:"groupId"`
}

type Connections

type Connections struct {
	Connections []Connection `json:"connections"`
}

type ControllerService

type ControllerService struct {
	Revision  Revision                   `json:"revision"`
	Component ControllerServiceComponent `json:"component"`
}

type ControllerServiceComponent

type ControllerServiceComponent struct {
	Id            string                 `json:"id,omitempty"`
	ParentGroupId string                 `json:"parentGroupId,omitempty"`
	Name          string                 `json:"name,omitempty"`
	Type          string                 `json:"type,omitempty"`
	State         string                 `json:"state,omitempty"`
	Properties    map[string]interface{} `json:"properties"`
}

type Funnel

type Funnel struct {
	Revision  Revision        `json:"revision"`
	Component FunnelComponent `json:"component"`
}

func FunnelStub

func FunnelStub() *Funnel

type FunnelComponent

type FunnelComponent struct {
	Id            string   `json:"id,omitempty"`
	ParentGroupId string   `json:"parentGroupId,omitempty"`
	Position      Position `json:"position,omitempty"`
}

Funnel

type Group

type Group struct {
	Revision  Revision       `json:"revision"`
	Component GroupComponent `json:"component"`
}

func GroupStub

func GroupStub() *Group

func (Group) String

func (c Group) String() string

type GroupComponent

type GroupComponent struct {
	Id            string    `json:"id,omitempty"`
	ParentGroupId string    `json:"parentGroupId,omitempty"`
	Identity      string    `json:"identity,omitempty"`
	Position      *Position `json:"position,omitempty"`
	Users         []Tenant  `json:"users,omitempty"`
}

Group Tennants

func (GroupComponent) String

func (c GroupComponent) String() string

type Port

type Port struct {
	Revision  Revision      `json:"revision"`
	Component PortComponent `json:"component"`
}

input port

type PortComponent

type PortComponent struct {
	Id            string   `json:"id,omitempty"`
	ParentGroupId string   `json:"parentGroupId"`
	Name          string   `json:"name"`
	PortType      string   `json:"type"`
	Comments      string   `json:"comments"`
	Position      Position `json:"position"`
	State         string   `json:"state,omitempty"`
}

type PortStateComponent

type PortStateComponent struct {
	Id    string `json:"id,omitempty"`
	State string `json:"state,omitempty"`
}

type PortStateUpdate

type PortStateUpdate struct {
	Revision  Revision           `json:"revision"`
	Component PortStateComponent `json:"component"`
}

type Position

type Position struct {
	X float64 `json:"x"`
	Y float64 `json:"y"`
}

type ProcessGroup

type ProcessGroup struct {
	Revision  Revision              `json:"revision"`
	Component ProcessGroupComponent `json:"component"`
}

type ProcessGroupComponent

type ProcessGroupComponent struct {
	Id            string   `json:"id,omitempty"`
	ParentGroupId string   `json:"parentGroupId"`
	Name          string   `json:"name"`
	Position      Position `json:"position"`
}

type Processor

type Processor struct {
	Revision  Revision           `json:"revision"`
	Component ProcessorComponent `json:"component"`
}

func ProcessorStub

func ProcessorStub() *Processor

type ProcessorComponent

type ProcessorComponent struct {
	Id            string                  `json:"id,omitempty"`
	ParentGroupId string                  `json:"parentGroupId,omitempty"`
	Name          string                  `json:"name,omitempty"`
	Type          string                  `json:"type,omitempty"`
	Position      *Position               `json:"position,omitempty"`
	State         string                  `json:"state,omitempty"`
	Config        *ProcessorConfig        `json:"config,omitempty"`
	Relationships []ProcessorRelationship `json:"relationships,omitempty"`
}

type ProcessorConfig

type ProcessorConfig struct {
	SchedulingStrategy               string `json:"schedulingStrategy"`
	SchedulingPeriod                 string `json:"schedulingPeriod"`
	ExecutionNode                    string `json:"executionNode"`
	ConcurrentlySchedulableTaskCount int    `json:"concurrentlySchedulableTaskCount"`

	Properties                  map[string]interface{} `json:"properties"`
	AutoTerminatedRelationships []string               `json:"autoTerminatedRelationships"`
}

type ProcessorRelationship

type ProcessorRelationship struct {
	Name          string `json:"name"`
	AutoTerminate bool   `json:"autoTerminate"`
}

type RemoteProcessGroup

type RemoteProcessGroup struct {
	Revision  Revision                    `json:"revision"`
	Component RemoteProcessGroupComponent `json:"component"`
}

type RemoteProcessGroupComponent

type RemoteProcessGroupComponent struct {
	Id                string   `json:"id,omitempty"`
	ParentGroupId     string   `json:"parentGroupId"`
	Name              string   `json:"name"`
	Position          Position `json:"position"`
	TargetUris        string   `json:"targetUris"`
	TransportProtocol string   `json:"transportProtocol"`
}

remote process group

type ReportingTask

type ReportingTask struct {
	Revision  Revision               `json:"revision"`
	Component ReportingTaskComponent `json:"component"`
}

type ReportingTaskComponent

type ReportingTaskComponent struct {
	Id                 string                 `json:"id,omitempty"`
	ParentGroupId      string                 `json:"parentGroupId,omitempty"`
	Name               string                 `json:"name,omitempty"`
	Type               string                 `json:"type,omitempty"`
	Comments           string                 `json:"comments"`
	SchedulingStrategy string                 `json:"schedulingStrategy"`
	SchedulingPeriod   string                 `json:"schedulingPeriod"`
	Properties         map[string]interface{} `json:"properties"`
}

type Revision

type Revision struct {
	Version int `json:"version"`
}

type Tenant

type Tenant struct {
	Id string `json:"id"`
}

User Tennants

type TenantSearchResult

type TenantSearchResult struct {
	Users      []Tenant `json:"users"`
	UserGroups []Tenant `json:"userGroups"`
}

type User

type User struct {
	Revision  Revision      `json:"revision"`
	Component UserComponent `json:"component"`
}

func UserStub

func UserStub() *User

func (User) String

func (u User) String() string

func (User) ToTenant

func (u User) ToTenant() *Tenant

type UserComponent

type UserComponent struct {
	Id            string    `json:"id,omitempty"`
	ParentGroupId string    `json:"parentGroupId,omitempty"`
	Identity      string    `json:"identity,omitempty"`
	Position      *Position `json:"position,omitempty"`
}

func (UserComponent) String

func (uc UserComponent) String() string

Jump to

Keyboard shortcuts

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