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.