<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def upgrade_juju( self, dry_run=False, reset_previous_upgrade=False, upload_tools=False, version=None):
 """Upgrade Juju on all machines in a model. :param bool dry_run: Don't do the actual upgrade :param bool reset_previous_upgrade: Clear the previous (incomplete) upgrade status :param bool upload_tools: Upload local version of tools :param str version: Upgrade to a specific version """

        raise NotImplementedError()