Documentation
¶
Overview ¶
Package icllientpkg implements a client to package imgrpkg for the purpose of presenting a single ProxyFS volume via FUSE.
To configure an iclientpkg instance, Start() is called passing, as the sole argument, a package conf ConfMap. Here is a sample .conf file:
[ICLIENT]
VolumeName: testvol
MountPointDirPath: /mnt
FUSEBlockSize: 512 # Several tools/applications actually require fission.KStatFS.BSize to be 512
FUSEAllowOther: true
FUSEMaxBackground: 1000
FUSECongestionThreshhold: 0
FUSEMaxPages: 256
FUSEMaxRead: 1048576 # 1MiB == FUSEMaxPages(256) * 4KiB
FUSEMaxWrite: 1048576 # 1MiB == FUSEMaxPages(256) * 4KiB
FUSEEntryValidDuration: 250ms
FUSEAttrValidDuration: 250ms
FUSENameLenMax: 255
AuthPlugInPath: iauth-swift.so
AuthPlugInEnvName: # Only used if not defining AuthPlugInEnvValue here
AuthPlugInEnvValue: {"AuthURL":"http://swift:8080/auth/v1.0"\u002C"AuthUser":"test:tester"\u002C"AuthKey":"testing"\u002C"Account":"AUTH_test"\u002C"Container":"con"}
SwiftTimeout: 10m
SwiftRetryLimit: 4
SwiftRetryDelay: 100ms
SwiftRetryDelayVariance: 25 # Percentage (1-100) of SwitRetryDelay
SwiftRetryExponentialBackoff: 1.4
SwiftConnectionPoolSize: 128
RetryRPCPublicIPAddr: imgr
RetryRPCPort: 32356
RetryRPCDeadlineIO: 60s
RetryRPCKeepAlivePeriod: 60s
RetryRPCCACertFilePath: # Defaults to /dev/null disabling TLS
MaxSharedLeases: 500
MaxExclusiveLeases: 100 # Caps pending FileFlush data at 1GiB (with FileFlushTriggerSize of 10MiB)
InodePayloadEvictLowLimit: 100000
InodePayloadEvictHighLimit: 100010
DirInodeMaxKeysPerBPlusTreePage: 1024
FileInodeMaxKeysPerBPlusTreePage: 2048
ReadCacheLineSize: 1048576 # 1MiB
ReadCacheLineCountMax: 1024 # 1GiB (with ReadCacheLineSize of 1MiB)
FileFlushTriggerSize: 10485760 # [10MiB] Amount of written data before metadata is appended and flush is triggered
FileFlushTriggerDuration: 10s # Amount of time before unwritten data and its metadata flush is triggered
InodeLockRetryDelay: 10ms
InodeLockRetryDelayVariance: 50 # Percentage (1-100) of InodeLockRetryDelay
LogFilePath: iclient.log
LogToConsole: true
TraceEnabled: false
FUSELogEnabled: false
RetryRPCLogEnabled: false
HTTPServerIPAddr: # Defaults to 0.0.0.0 (i.e. all interfaces)
HTTPServerPort: # Defaults to disabling the embedded HTTP Server
Most of the config keys are required and must have values. One set of exceptions are the HTTPServer{IPAddr|Port} keys that, if not present (or HTTPServerPort is zero) will disable the embedded HTTP Server. Another set of exceptions are the AuthPlungInEnv{Name|Value} keys of which exactly one must be present.
The embedded HTTP Server (at URL http://<HTTPServerIPAddr>:<HTTPServerPort>) responds to the following:
GET /config
This will return a JSON document that matches the conf.ConfMap used to launch this package.
GET /leases
This will display the state of every lease.
POST /leases/demote
This will trigger the demotion of any Exclusive Leases held.
POST /leases/release
This will trigger the release of any {Exclusive|Shared} Leases held.
GET /stats
This will return a raw bucketstats dump.
GET /version
Index ¶
Constants ¶
const (
HTTPUserAgent = "iclient"
)
Variables ¶
This section is empty.
Functions ¶
func LogFatalf ¶
func LogFatalf(format string, args ...interface{})
LogFatalf is a wrapper around the internal logFatalf() func called by iclient/main.go::main().
func LogInfof ¶
func LogInfof(format string, args ...interface{})
LogInfof is a wrapper around the internal logInfof() func called by iclient/main.go::main().
func LogWarnf ¶
func LogWarnf(format string, args ...interface{})
LogWarnf is a wrapper around the internal logWarnf() func called by iclient/main.go::main().
func Signal ¶
func Signal() (err error)
Signal is called to interrupt the server for performing operations such as log rotation.
Types ¶
This section is empty.