package org.openstack4j.model.network.ext.builder;

import org.openstack4j.common.Buildable.Builder;
import org.openstack4j.model.network.ext.SessionPersistence;
import org.openstack4j.model.network.ext.VipUpdate;

/**
 * A Builder to update a vip
 *
 * @author liujunpeng
 */
public interface VipUpdateBuilder extends Builder<VipUpdateBuilder, VipUpdate> {

    /**
     * Optional
     *
     * @param name Human-readable name for the VIP. Does not have to be unique.
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder name(String name);

    /**
     * Optional
     *
     * @param description Human-readable description for the VIP.
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder description(String description);

    /**
     * Optional
     *
     * @param poolId The ID of the pool with which the VIP is associated.
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder poolId(String poolId);

    /**
     * Optional
     *
     * @param sessionPersistence Session persistence parameters for the VIP. Omit the
     * session_persistence parameter to prevent session persistence.
     * When no session persistence is used, the session_persistence
     * parameter does not appear in the API response. To clear
     * session persistence for the VIP, set the session_persistence
     * parameter to null in a VIP update request.
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder sessionPersistence(SessionPersistence sessionPersistence);

    /**
     * Optional
     *
     * @param connectionLimit . The maximum number of connections allowed for the VIP. Value
     * is -1 if the limit is not set.
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder connectionLimit(Integer connectionLimit);

    /**
     * Optional
     *
     * @param adminStateUp The administrative state of the VIP. A valid value is true
     * (UP) or false (DOWN).
     * @return VipUpdateBuilder
     */
    VipUpdateBuilder adminStateUp(boolean adminStateUp);

}
