engine: resources: Modernize the user resource
Do some small fixups like adding ctx and fixing obvious bugs.
This commit is contained in:
@@ -152,7 +152,7 @@ func (obj *UserRes) Watch(ctx context.Context) error {
|
|||||||
var send = false // send event?
|
var send = false // send event?
|
||||||
for {
|
for {
|
||||||
if obj.init.Debug {
|
if obj.init.Debug {
|
||||||
obj.init.Logf("Watching: %s", passwdFile) // attempting to watch...
|
obj.init.Logf("watching: %s", passwdFile) // attempting to watch...
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
@@ -161,10 +161,10 @@ func (obj *UserRes) Watch(ctx context.Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err := event.Error; err != nil {
|
if err := event.Error; err != nil {
|
||||||
return errwrap.Wrapf(err, "Unknown %s watcher error", obj)
|
return errwrap.Wrapf(err, "unknown %s watcher error", obj)
|
||||||
}
|
}
|
||||||
if obj.init.Debug { // don't access event.Body if event.Error isn't nil
|
if obj.init.Debug { // don't access event.Body if event.Error isn't nil
|
||||||
obj.init.Logf("Event(%s): %v", event.Body.Name, event.Body.Op)
|
obj.init.Logf("event(%s): %v", event.Body.Name, event.Body.Op)
|
||||||
}
|
}
|
||||||
send = true
|
send = true
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ func (obj *UserRes) Watch(ctx context.Context) error {
|
|||||||
|
|
||||||
// CheckApply method for User resource.
|
// CheckApply method for User resource.
|
||||||
func (obj *UserRes) CheckApply(ctx context.Context, apply bool) (bool, error) {
|
func (obj *UserRes) CheckApply(ctx context.Context, apply bool) (bool, error) {
|
||||||
var exists = true
|
exists := true
|
||||||
usr, err := user.Lookup(obj.Name())
|
usr, err := user.Lookup(obj.Name())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if _, ok := err.(user.UnknownUserError); !ok {
|
if _, ok := err.(user.UnknownUserError); !ok {
|
||||||
@@ -238,38 +238,39 @@ func (obj *UserRes) CheckApply(ctx context.Context, apply bool) (bool, error) {
|
|||||||
if obj.State == "exists" {
|
if obj.State == "exists" {
|
||||||
if exists {
|
if exists {
|
||||||
cmdName = "usermod"
|
cmdName = "usermod"
|
||||||
obj.init.Logf("Modifying user: %s", obj.Name())
|
obj.init.Logf("modifying user: %s", obj.Name())
|
||||||
} else {
|
} else {
|
||||||
cmdName = "useradd"
|
cmdName = "useradd"
|
||||||
obj.init.Logf("Adding user: %s", obj.Name())
|
obj.init.Logf("adding user: %s", obj.Name())
|
||||||
}
|
}
|
||||||
if obj.AllowDuplicateUID {
|
if obj.AllowDuplicateUID {
|
||||||
args = append(args, "--non-unique")
|
args = append(args, "--non-unique")
|
||||||
}
|
}
|
||||||
if obj.UID != nil {
|
if obj.UID != nil {
|
||||||
args = append(args, "-u", fmt.Sprintf("%d", *obj.UID))
|
args = append(args, "--uid", fmt.Sprintf("%d", *obj.UID))
|
||||||
}
|
}
|
||||||
if obj.GID != nil {
|
if obj.GID != nil {
|
||||||
args = append(args, "-g", fmt.Sprintf("%d", *obj.GID))
|
args = append(args, "--gid", fmt.Sprintf("%d", *obj.GID))
|
||||||
}
|
}
|
||||||
if obj.Group != nil {
|
if obj.Group != nil {
|
||||||
args = append(args, "-g", *obj.Group)
|
args = append(args, "--gid", *obj.Group)
|
||||||
}
|
}
|
||||||
if obj.Groups != nil {
|
if obj.Groups != nil {
|
||||||
args = append(args, "-G", strings.Join(obj.Groups, ","))
|
args = append(args, "--groups", strings.Join(obj.Groups, ","))
|
||||||
}
|
}
|
||||||
if obj.HomeDir != nil {
|
if obj.HomeDir != nil {
|
||||||
args = append(args, "-d", *obj.HomeDir)
|
args = append(args, "--home", *obj.HomeDir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if obj.State == "absent" {
|
if obj.State == "absent" {
|
||||||
cmdName = "userdel"
|
cmdName = "userdel"
|
||||||
obj.init.Logf("Deleting user: %s", obj.Name())
|
args = []string{}
|
||||||
|
obj.init.Logf("deleting user: %s", obj.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
args = append(args, obj.Name())
|
args = append(args, obj.Name())
|
||||||
|
|
||||||
cmd := exec.Command(cmdName, args...)
|
cmd := exec.CommandContext(ctx, cmdName, args...)
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||||
Setpgid: true,
|
Setpgid: true,
|
||||||
Pgid: 0,
|
Pgid: 0,
|
||||||
@@ -343,7 +344,7 @@ func (obj *UserRes) Cmp(r engine.Res) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (obj.HomeDir == nil) != (res.HomeDir == nil) {
|
if (obj.HomeDir == nil) != (res.HomeDir == nil) {
|
||||||
return fmt.Errorf("the HomeDirs differs")
|
return fmt.Errorf("the HomeDir differs")
|
||||||
}
|
}
|
||||||
if obj.HomeDir != nil && res.HomeDir != nil {
|
if obj.HomeDir != nil && res.HomeDir != nil {
|
||||||
if *obj.HomeDir != *res.HomeDir {
|
if *obj.HomeDir != *res.HomeDir {
|
||||||
|
|||||||
Reference in New Issue
Block a user