X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/33c70b07361d9d08814a5c324282e7f39e2879f9..27ab60e21b3cf9c908716ae74e63aba8e4cb6349:/tools/sync-groups/sync-groups.go diff --git a/tools/sync-groups/sync-groups.go b/tools/sync-groups/sync-groups.go index 9e2307b7a6..24e838c8f1 100644 --- a/tools/sync-groups/sync-groups.go +++ b/tools/sync-groups/sync-groups.go @@ -226,8 +226,9 @@ func SetParentGroup(cfg *ConfigParams) error { log.Println("Default parent group not found, creating...") } groupData := map[string]string{ - "name": cfg.ParentGroupName, - "owner_uuid": cfg.SysUserUUID, + "name": cfg.ParentGroupName, + "owner_uuid": cfg.SysUserUUID, + "group_class": "role", } if err := CreateGroup(cfg, &parentGroup, groupData); err != nil { return fmt.Errorf("error creating system user owned group named %q: %s", groupData["name"], err) @@ -274,7 +275,13 @@ func GetConfig() (config ConfigParams, err error) { if !u.IsActive || !u.IsAdmin { return config, fmt.Errorf("current user (%s) is not an active admin user", u.UUID) } - config.SysUserUUID = u.UUID[:12] + "000000000000000" + + var ac struct{ ClusterID string } + err = config.Client.RequestAndDecode(&ac, "GET", "arvados/v1/config", nil, nil) + if err != nil { + return config, fmt.Errorf("error getting the exported config: %s", err) + } + config.SysUserUUID = ac.ClusterID + "-tpzed-000000000000000" // Set up remote groups' parent if err = SetParentGroup(&config); err != nil { @@ -431,7 +438,7 @@ func ProcessFile( "group_class": "role", } if e := CreateGroup(cfg, &newGroup, groupData); e != nil { - err = fmt.Errorf("error creating group named %q: %s", groupName, err) + err = fmt.Errorf("error creating group named %q: %s", groupName, e) return } // Update cached group data @@ -528,17 +535,21 @@ func GetRemoteGroups(cfg *ConfigParams, allUsers map[string]arvados.User) (remot params := arvados.ResourceListParams{ Filters: []arvados.Filter{{ - Attr: "owner_uuid", + Attr: "tail_uuid", Operator: "=", Operand: cfg.ParentGroupUUID, }}, } - results, err := GetAll(cfg.Client, "groups", params, &GroupList{}) + results, err := GetAll(cfg.Client, "links", params, &LinkList{}) if err != nil { return remoteGroups, groupNameToUUID, fmt.Errorf("error getting remote groups: %s", err) } for _, item := range results { - group := item.(arvados.Group) + var group arvados.Group + err = GetGroup(cfg, &group, item.(arvados.Link).HeadUUID) + if err != nil { + return remoteGroups, groupNameToUUID, fmt.Errorf("error getting remote group: %s", err) + } // Group -> User filter g2uFilter := arvados.ResourceListParams{ Filters: []arvados.Filter{{