/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.vipr.client.core; import com.emc.storageos.model.NamedRelatedResourceRep; import com.emc.storageos.model.usergroup.UserGroupCreateParam; import com.emc.storageos.model.usergroup.UserGroupList; import com.emc.storageos.model.usergroup.UserGroupRestRep; import com.emc.storageos.model.usergroup.UserGroupUpdateParam; import com.emc.vipr.client.ViPRCoreClient; import com.emc.vipr.client.core.filters.ResourceFilter; import com.emc.vipr.client.core.impl.PathConstants; import com.emc.vipr.client.core.util.ResourceUtils; import com.emc.vipr.client.impl.RestClient; import java.net.URI; import java.util.List; public class UserGroup extends AbstractCoreResources<UserGroupRestRep> implements TopLevelResources<UserGroupRestRep> { public UserGroup(ViPRCoreClient parent, RestClient client) { super(parent, client, UserGroupRestRep.class, PathConstants.USER_GROUP_URL); } @Override public UserGroup withInactive(boolean inactive) { return (UserGroup) super.withInactive(inactive); } @Override public UserGroup withInternal(boolean internal) { return (UserGroup) super.withInternal(internal); } /** * Lists all user groups. * <p> * API Call: <tt>GET /vdc/admin/user-groups</tt> * * @return the list of user groups. */ @Override public List<NamedRelatedResourceRep> list() { UserGroupList response = client.get(UserGroupList.class, baseUrl); return ResourceUtils.defaultList(response.getUserGroups()); } @Override public List<UserGroupRestRep> getAll() { return getAll(null); } @Override public List<UserGroupRestRep> getAll(ResourceFilter<UserGroupRestRep> filter) { List<NamedRelatedResourceRep> refs = list(); return getByRefs(refs); } /** * Creates an user group. * <p> * API Call: <tt>POST /vdc/admin/user-groups</tt> * * @param input * the create configuration. * @return the created user group. */ public UserGroupRestRep create(UserGroupCreateParam input) { return client.post(UserGroupRestRep.class, input, baseUrl); } /** * Updates an user group. * <p> * API Call: <tt>PUT /vdc/admin/user-groups</tt> * * @param input * the update configuration. * @return the updated user group. */ public UserGroupRestRep update(URI id, UserGroupUpdateParam input) { return client.put(UserGroupRestRep.class, input, getIdUrl(), id); } /** * Deletes an user group. * <p> * API Call: <tt>DELETE /vdc/admin/user-groups/{id}</tt> * * @param id the user group ID. */ public void delete(URI id) { client.delete(String.class, getIdUrl(), id); } }