ulimit.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package opts // import "github.com/docker/docker/opts"
  2. import (
  3. "fmt"
  4. units "github.com/docker/go-units"
  5. )
  6. // UlimitOpt defines a map of Ulimits
  7. type UlimitOpt struct {
  8. values *map[string]*units.Ulimit
  9. }
  10. // NewUlimitOpt creates a new UlimitOpt
  11. func NewUlimitOpt(ref *map[string]*units.Ulimit) *UlimitOpt {
  12. if ref == nil {
  13. ref = &map[string]*units.Ulimit{}
  14. }
  15. return &UlimitOpt{ref}
  16. }
  17. // Set validates a Ulimit and sets its name as a key in UlimitOpt
  18. func (o *UlimitOpt) Set(val string) error {
  19. l, err := units.ParseUlimit(val)
  20. if err != nil {
  21. return err
  22. }
  23. (*o.values)[l.Name] = l
  24. return nil
  25. }
  26. // String returns Ulimit values as a string.
  27. func (o *UlimitOpt) String() string {
  28. var out []string
  29. for _, v := range *o.values {
  30. out = append(out, v.String())
  31. }
  32. return fmt.Sprintf("%v", out)
  33. }
  34. // GetList returns a slice of pointers to Ulimits.
  35. func (o *UlimitOpt) GetList() []*units.Ulimit {
  36. var ulimits []*units.Ulimit
  37. for _, v := range *o.values {
  38. ulimits = append(ulimits, v)
  39. }
  40. return ulimits
  41. }
  42. // Type returns the option type
  43. func (o *UlimitOpt) Type() string {
  44. return "ulimit"
  45. }
  46. // NamedUlimitOpt defines a named map of Ulimits
  47. type NamedUlimitOpt struct {
  48. name string
  49. UlimitOpt
  50. }
  51. var _ NamedOption = &NamedUlimitOpt{}
  52. // NewNamedUlimitOpt creates a new NamedUlimitOpt
  53. func NewNamedUlimitOpt(name string, ref *map[string]*units.Ulimit) *NamedUlimitOpt {
  54. if ref == nil {
  55. ref = &map[string]*units.Ulimit{}
  56. }
  57. return &NamedUlimitOpt{
  58. name: name,
  59. UlimitOpt: *NewUlimitOpt(ref),
  60. }
  61. }
  62. // Name returns the option name
  63. func (o *NamedUlimitOpt) Name() string {
  64. return o.name
  65. }