<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rolling_update(config=None, name=None, image=None, container_name=None, rc_new=None):
 """ Performs a simple rolling update of a ReplicationController. See https://github.com/kubernetes/kubernetes/blob/master/docs/design/simple-rolling-update.md for algorithm details. We have modified it slightly to allow for keeping the same RC name between updates, which is not supported by default by kubectl. :param config: An instance of K8sConfig. If omitted, reads from ~/.kube/config. :param name: The name of the ReplicationController we want to update. :param image: The updated image version we want applied. :param container_name: The name of the container we're targeting for the update. Required if more than one container is present. :param rc_new: An instance of K8sReplicationController with the new configuration to apply. Mutually exclusive with [image, container_name] if specified. :return: """


        if name is None:
            raise SyntaxError(
                'K8sReplicationController: name: [ {0} ] cannot be None.'.format(name))
        if image is None and rc_new is None:
            raise SyntaxError(
                "K8sReplicationController: please specify either 'image' or 'rc_new'")
        if container_name is not None and image is not None and rc_new is not None:
            raise SyntaxError(
                'K8sReplicationController: rc_new is mutually exclusive with an (container_name, image) pair.')

        return K8sReplicationController._rolling_update_init(
            config=config,
            name=name,
            image=image,
            container_name=container_name,
            rc_new=rc_new)