@classmethod
  def start_remote_appcontroller(cls, host, keyname, is_verbose):
    AppScaleLogger.log("Starting AppController at {0}".format(host))

    # Remove any previous state. TODO: Don't do this with the tools.
    cls.ssh(host, keyname,
      'rm -rf {}/appcontroller-state.json'.format(cls.CONFIG_DIR), is_verbose)

    # Remove any monit configuration files from previous AppScale deployments.
    cls.ssh(host, keyname, 'rm -rf /etc/monit/conf.d/appscale-*.cfg', is_verbose)

    # Copy over the config file that indicates how the AppController should be
    # started up.
    cls.scp(host, keyname, cls.MONIT_APPCONTROLLER_CONFIG_FILE,
      '/etc/monit/conf.d/appscale-controller-17443.cfg', is_verbose)

    # Start up monit.
    cls.ssh(host, keyname, 'monit quit; ', is_verbose)
    cls.ssh(host, keyname, 'service monit start', is_verbose)
    time.sleep(1)

    # Start the AppController.
    cls.ssh(host, keyname, 'monit start -g controller', is_verbose)
    time.sleep(1)

    AppScaleLogger.log("Please wait for the AppController to finish " + \
      "pre-processing tasks.")

    cls.sleep_until_port_is_open(host, AppControllerClient.PORT, is_verbose)
Test for Return True if the minion ID matches the given pcre target
dataset/ETHPy150Open AppScale/appscale-tools/lib/remote_helper.py/RemoteHelper.start_remote_appcontroller--crossover with--dataset/ETHPy150Open saltstack/salt/tests/unit/modules/match_test.py/MatchTestCase.test_pcre