Careers

Collaborator Groups on Supermarket

What is it?

Collaborator Groups are a new way to manage cookbook collaborators in Supermarket. With this feature you can now create groups of collaborators and associate that group with a cookbook or tool. When you add a new member to the group, that user will automatically be added to all cookbooks or tools the group is associated with. When a member is removed from a group, that user will automatically be removed as a collaborator from all cookbooks and tools the group is associated with.

Important note:
This feature is currently only available on private installations of Supermarket. We will activate this feature on the public Supermarket in early 2016.

Why?

You, the Chef Community, asked for it! Feedback on Supermarket, as well as all our open source products, is very important to us when deciding what to work on next. This feature was first requested in [this issue](https://github.com/chef/supermarket/issues/658) in the [Supermarket Github repo](https://github.com/chef/supermarket). Additionally, several customers of Chef and members of the Chef community spoke to us many times about their need for this feature and how it would make their Supermarket experience more delightful. Here it is!

How Does it Work?

Activating the Feature

You activate the Collaborator Group feature like you would activate any feature in a Private Supermarket install.

For more information about setting up a private Supermarket, please see [this webinar recording](https://www.brighttalk.com/webcast/11349/164925). Or, please see [the slides I used when I adapted this webinar into a talk](http://www.slideshare.net/NellShamrell/a-supermarket-of-your-own-running-a-private-chef-supermarket).

If you are using a wrapper cookbook around the [supermarket omnibus cookbook](https://supermarket.chef.io/cookbooks/supermarket-omnibus-cookbook), you will need to either declare this feature in your default.rb recipe OR in a databag.

Please see this (https://gist.github.com/nellshamrell/b56f0865c630916ea7ff) for an example of declaring the feature in recipes/default.rb

Creating a Collaborator Group

When the Collaborator Groups feature is active, visit your User Profile page. You should see a button labeled “Groups”

Click on this button, and this will bring you to a section of your profile which will show all the groups you are a part of. Currently, you are a member of no groups. Let’s go ahead and create one. Click on the “Create Group” button.

Now you’ll need to set a name for this group. Group names do need to be globally unique. Type in a name into the textbox.

Go ahead and click “Create Group”

Managing Collaborator Group Members

Adding a Collaborator Group Member

After you create your group, you will be brought to a page which shows the group’s members. Notice that you were automatically added to the group as an Admin member. Admin members can add or remove group members.

Ready to add another member to the group? Click on the “Add Group Member” link.

Now you’ll see a modal window.

Enter in the first three letters of the username of the user you want to add to the group. The field will then populate a dropdown where you can select a user.

You can also add more than one user as a member at once.

You will then see the users listed as members of the group.

Removing a Collaborator Group Member

Need to remove a group member? Go ahead and click the red “Remove” button. And the member will be removed from the group.

Promoting a Collaborator Group Member to Admin

Whenever you add a member to a group, they will initially be added as a non-admin member. This means they cannot add or remove members from the group.

If you’d like to promote a member to be an admin member, click on the “Make Admin” button

After you click that button, you will see the member now listed as an Admin Member. Notice that both Admin Members now have red “Remove” button? This is because there must be at least one Admin Member of a group at all times. If there is only one Admin Member, that member cannot be removed. If there are multiple Admin Members, any can be removed.

Using a Collaborator Group with Cookbooks and Tools

Adding a Collaborator Group to a Cookbook or Tool

The power of the Collaborator Groups feature becomes apparent when using them with cookbooks and tools.

When you navigate to a cookbook or tool on Supermarket that you own or have privileges to add collaborators to, you will see dropdown button labeled “Manage Cookbook.”

Go ahead and click on this and you will see an option to Add Collaborator.

Now click on this option. You will now see a modal where you can add either users or groups as collaborators on the cookbook.

Select the Groups text field and begin typing in the name of the group you want to add. Once you get three letters in the text field, you will see a dropdown of groups with names that start with those three letters. Go ahead and select the group you want to add.

You can add more than one group at once.

When you’ve specified all the groups you wish to add, click on the “Add” button. Then you will see these groups added to your cookbook or tool.

Each of the group members are added as collaborators to the cookbook and have all of the privileges of being a collaborator.

Now, when you look back at your collaborator group’s page, you will see the cookbook or tool listed and linked to.

Removing a Collaborator Group from a Cookbook or Tool

Should you wish to remove an entire group of collaborators, click on the red “Remove” button next to the collaborator group’s name.

After you click on it, that group and all collaborators associated with that group will be removed.

Note:
When a user is in more than one collaborator group and more than one of those groups are associated with the cookbook or tool, when one of those groups is removed only the collaborator record associated with the removed group will be removed. The user will still be a collaborator on the cookbook or tool associated with the other group(s).

Adding a Collaborator to a Group Associated with a Cookbook/Tool

Now that you’ve added the collaborator group to a cookbook or tool, when you add a new member to the group.

That member will automatically be added as a collaborator on any cookbooks or tools associated with this group.

Removing a Collaborator from a Group Associated with a Cookbook/Tool

Likewise, when you remove a member from a group

Then that group member will automatically be removed as a collaborator from any cookbook or tool associated with the group.

Questions?

Why Only Private Supermarket?

We are initially rolling out this feature only to private Supermarkets, though we will be adding it to the public Supermarket in early 2016. This is so we can gather feedback from private supermarket users before rolling it out to the larger, public Supermarket.

Can Collaborator Groups be Synced with LDAP Groups?

No, not at this time. This has been a highly requested feature and one that we will revisit and consider in 2016.

Can Collaborator Groups be Synced with Github Teams or Chef Server Organizations?

This answer is also no, not at this time. The first step to sync with Github Teams on a private Supermarket would be to add the ability to use Supermarket with a Github Enterprise installation. There is an [issue requesting to use a Github Enterprise installation with Supermarket](https://github.com/chef/supermarket/issues/1130), we will prioritize this according to our current and future workload.

There is not currently a way to sync Collaborator Groups with Chef Server Organizations at this time. If this is requested, we will revisit it.

Can a Collaborator Group Own a Cookbook or Tool?

No, the cookbook or tool’s owner must still be an individual Supermarket user.

Posted in

Nell Shamrell-Harrington is a Principal Software Development Engineer and Community Engineering Lead at Chef. She is also a member of the Habitat core team. She specializes in Open Source, Chef, Ruby, Rails, Rust, Regular Expressions, and Test Driven Development and has traveled the world speaking on these topics. Prior to entering the world of software development, she studied and worked in the field of Theatre. The world of Theatre prepared her well for the dynamic world of creating software applications. In both, she strives to create a cohesive and extraordinary experience.