Package com.emc.vipr.client.core

Source Code of com.emc.vipr.client.core.Networks

package com.emc.vipr.client.core;

import static com.emc.vipr.client.core.impl.PathConstants.ID_URL_FORMAT;
import static com.emc.vipr.client.core.impl.PathConstants.VARRAY_URL;
import static com.emc.vipr.client.core.util.ResourceUtils.defaultList;

import java.net.URI;
import java.util.List;

import com.emc.storageos.model.BulkIdParam;
import com.emc.storageos.model.NamedRelatedResourceRep;
import com.emc.storageos.model.network.NetworkBulkRep;
import com.emc.storageos.model.varray.NetworkCreate;
import com.emc.storageos.model.varray.NetworkEndpointParam;
import com.emc.storageos.model.varray.NetworkList;
import com.emc.storageos.model.varray.NetworkRestRep;
import com.emc.storageos.model.varray.NetworkUpdate;
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;

/**
* Networks resources.
* <p>
* Base URL: <tt>/vdc/networks</tt>
*/
public class Networks extends AbstractBulkResources<NetworkRestRep> implements TopLevelResources<NetworkRestRep> {
    public Networks(ViPRCoreClient parent, RestClient client) {
        super(parent, client, NetworkRestRep.class, PathConstants.NETWORK_URL);
    }

    @Override
    public Networks withInactive(boolean inactive) {
        return (Networks) super.withInactive(inactive);
    }

    @Override
    protected List<NetworkRestRep> getBulkResources(BulkIdParam input) {
        NetworkBulkRep response = client.post(NetworkBulkRep.class, input, getBulkUrl());
        return defaultList(response.getNetworks());
    }

    /**
     * Lists all networks.
     * <p>
     * API Call: <tt>GET /vdc/networks</tt>
     *
     * @return the list of network references.
     */
    @Override
    public List<NamedRelatedResourceRep> list() {
        NetworkList response = client.get(NetworkList.class, baseUrl);
        return ResourceUtils.defaultList(response.getNetworks());
    }

    /**
     * Gets the list of all networks. This is a convenience method for: <tt>getByRefs(list())</tt>.
     *
     * @return the list of all networks.
     */
    @Override
    public List<NetworkRestRep> getAll() {
        return getAll(null);
    }

    /**
     * Gets the list of all networks, optionally filtering the results. This is a convenience method for:
     * <tt>getByRefs(list(), filter)</tt>.
     *
     * @param filter
     *        the resource filter to apply to the results as they are returned (optional).
     * @return the list of all networks.
     */
    @Override
    public List<NetworkRestRep> getAll(ResourceFilter<NetworkRestRep> filter) {
        List<NamedRelatedResourceRep> refs = list();
        return getByRefs(refs, filter);
    }

    /**
     * Lists the networks that are associated with the given virtual array.
     * <p>
     * API Call: <tt>GET /vdc/varrays/{id}/networks</tt>
     *
     * @param varrayId
     *        the ID of the virtual array.
     * @return the list of network references.
     */
    public List<NamedRelatedResourceRep> listByVirtualArray(URI varrayId) {
        NetworkList response = client.get(NetworkList.class, String.format(ID_URL_FORMAT, VARRAY_URL) + "/networks", varrayId);
        return defaultList(response.getNetworks());
    }

    /**
     * Gets the networks that are associated with the given virtual array.
     * Convenience method for calling getByRefs(listByVirtualArray(varrayId)).
     *
     * @param varrayId
     *        the ID of the virtual array.
     * @return the list of networks.
     *
     * @see #listByVirtualArray(URI)
     * @see #getByRefs(java.util.Collection)
     */
    public List<NetworkRestRep> getByVirtualArray(URI varrayId) {
        return getByVirtualArray(varrayId, null);
    }

    /**
     * Gets the networks that are associated with the given virtual array.
     * Convenience method for calling getByRefs(listByVirtualArray(varrayId)).
     *
     * @param varrayId
     *        the ID of the virtual array.
     * @param filter
     *        the resource filter to apply to the results as they are returned (optional).
     *
     * @return the list of networks.
     *
     * @see #listByVirtualArray(URI)
     * @see #getByRefs(java.util.Collection)
     */
    public List<NetworkRestRep> getByVirtualArray(URI varrayId, ResourceFilter<NetworkRestRep> filter) {
        List<NamedRelatedResourceRep> refs = listByVirtualArray(varrayId);
        return getByRefs(refs, filter);
    }

    /**
     * Creates a network.
     * <p>
     * API Call: <tt>POST /vdc/networks</tt>
     *
     * @param input
     *        the create configuration.
     * @return the newly created network.
     */
    public NetworkRestRep create(NetworkCreate input) {
        return client.post(NetworkRestRep.class, input, PathConstants.NETWORK_URL);
    }

    /**
     * Creates a network in the given virtual array.
     * <p>
     * API Call: <tt>POST /vdc/varrays/{virtualArrayId}/networks</tt>
     *
     * @param virtualArrayId
     *        the ID of the virtual array.
     * @param input
     *        the create configuration.
     * @return the newly created network.
     *
     * @deprecated use {@link #create(NetworkCreate)} instead.
     */
    @Deprecated
    public NetworkRestRep create(URI virtualArrayId, NetworkCreate input) {
        return client.post(NetworkRestRep.class, input, PathConstants.NETWORK_BY_VARRAY_URL, virtualArrayId);
    }

    /**
     * Updates the given network by ID.
     * <p>
     * API Call: <tt>PUT /vdc/networks/{id}</tt>
     *
     * @param id
     *        the ID of the network to update.
     * @param input
     *        the update configuration.
     * @return the updated network.
     */
    public NetworkRestRep update(URI id, NetworkUpdate input) {
        return client.put(NetworkRestRep.class, input, getIdUrl(), id);
    }

    /**
     * Deactivates a network by ID.
     * <p>
     * API Call: <tt>POST /vdc/networks/{id}/deactivate?force=false</tt>
     *
     * @param id
     *        the ID of the network to deactivate.
     */
    public void deactivate(URI id) {
        deactivate(id, false);
    }
   
    /**
     * Deactivates a network by ID.
     * <p>
     * API Call: <tt>POST /vdc/networks/{id}/deactivate?force={force}</tt>
     *
     * @param id
     *        the ID of the network to deactivate.
     * @param force
     *        if true, will delete manually created network.
     */
    public void deactivate(URI id, boolean force) {
        URI deactivateUri = client.uriBuilder(getDeactivateUrl()).queryParam("force", force).build(id);
        client.postURI(String.class, deactivateUri);
    }

    public void deactivate(NetworkRestRep value) {
        deactivate(ResourceUtils.id(value));
    }

    /**
     * Registers the given network by ID.
     * <p>
     * API Call: <tt>POST /vdc/networks/{id}/register</tt>
     *
     * @param id
     *        the ID of the network to register.
     */
    public NetworkRestRep register(URI id) {
        return client.post(NetworkRestRep.class, getIdUrl() + "/register", id);
    }

    /**
     * Deregisters the given network by ID.
     * <p>
     * API Call: <tt>POST /vdc/networks/{id}/deregister</tt>
     *
     * @param id
     *        the ID of the network to deregister.
     */
    public NetworkRestRep deregister(URI id) {
        return client.post(NetworkRestRep.class, getIdUrl() + "/deregister", id);
    }

    /**
     * Updates an endpoint for the given network.
     * <p>
     * API Call: <tt>PUT /vdc/networks/{id}/endpoints</tt>
     *
     * @param id
     *        the ID of the network.
     * @param input
     *        the endpoint configuration.
     * @return the updated network.
     * @deprecated Use main update() call to update endpoints
     * @see #update(java.net.URI, com.emc.storageos.model.varray.NetworkUpdate)
     */
    @Deprecated
    public NetworkRestRep updateEndpoints(URI id, NetworkEndpointParam input) {
        return client.put(NetworkRestRep.class, input, getIdUrl() + "/endpoints", id);
    }
}
TOP

Related Classes of com.emc.vipr.client.core.Networks

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.