old_contents: #    Copyright 2014 Mirantis, Inc.
  #
  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
  #    not use this file except in compliance with the License. You may obtain
  #    a copy of the License at
  #
  #         http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  #    License for the specific language governing permissions and limitations
  #    under the License.
  
  import sys
  
  from oslo_config import cfg
  from oslo_serialization import jsonutils as json
  import six
  
  from fuel_agent import manager as manager
  from fuel_agent.openstack.common import log as logging
  from fuel_agent import version
  
  cli_opts = [
      cfg.StrOpt(
          'input_data_file',
          default='/tmp/provision.json',
          help='Input data file'
      ),
      cfg.StrOpt(
          'input_data',
          default='',
          help='Input data (json string)'
      ),
  ]
  
  CONF = cfg.CONF
  CONF.register_cli_opts(cli_opts)
  
  
  def provision():
      main(['do_provisioning'])
  
  
  def partition():
      main(['do_partitioning'])
  
  
  def copyimage():
      main(['do_copyimage'])
  
  
  def configdrive():
      main(['do_configdrive'])
  
  
  def bootloader():
      main(['do_bootloader'])
  
  
  def build_image():
      main(['do_build_image'])
  
  
  def print_err(line):
      sys.stderr.write(six.text_type(line))
      sys.stderr.write('\n')
  
  
  def handle_exception(exc):
      LOG = logging.getLogger(__name__)
      LOG.exception(exc)
      print_err('Unexpected error')
      print_err(exc)
      sys.exit(-1)
  
  
  def main(actions=None):
      CONF(sys.argv[1:], project='fuel-agent',
           version=version.version_info.release_string())
  
      logging.setup('fuel-agent')
      LOG = logging.getLogger(__name__)
  
      try:
          if CONF.input_data:
              data = json.loads(CONF.input_data)
          else:
              with open(CONF.input_data_file) as f:
                  data = json.load(f)
          LOG.debug('Input data: %s', data)
  
          mgr = manager.Manager(data)
          if actions:
              for action in actions:
                  getattr(mgr, action)()
      except Exception as exc:
          handle_exception(exc)
  
  
  if __name__ == '__main__':
      main()
  
new_contents: #    Copyright 2014 Mirantis, Inc.
  #
  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
  #    not use this file except in compliance with the License. You may obtain
  #    a copy of the License at
  #
  #         http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  #    License for the specific language governing permissions and limitations
  #    under the License.
  
  import sys
  
  from oslo_config import cfg
  import six
  import yaml
  
  from fuel_agent import manager as manager
  from fuel_agent.openstack.common import log as logging
  from fuel_agent import version
  
  cli_opts = [
      cfg.StrOpt(
          'input_data_file',
          default='/tmp/provision.json',
          help='Input data file'
      ),
      cfg.StrOpt(
          'input_data',
          default='',
          help='Input data (json string)'
      ),
  ]
  
  CONF = cfg.CONF
  CONF.register_cli_opts(cli_opts)
  
  
  def provision():
      main(['do_provisioning'])
  
  
  def partition():
      main(['do_partitioning'])
  
  
  def copyimage():
      main(['do_copyimage'])
  
  
  def configdrive():
      main(['do_configdrive'])
  
  
  def bootloader():
      main(['do_bootloader'])
  
  
  def build_image():
      main(['do_build_image'])
  
  
  def print_err(line):
      sys.stderr.write(six.text_type(line))
      sys.stderr.write('\n')
  
  
  def handle_exception(exc):
      LOG = logging.getLogger(__name__)
      LOG.exception(exc)
      print_err('Unexpected error')
      print_err(exc)
      sys.exit(-1)
  
  
  def main(actions=None):
      CONF(sys.argv[1:], project='fuel-agent',
           version=version.version_info.release_string())
  
      logging.setup('fuel-agent')
      LOG = logging.getLogger(__name__)
  
      try:
          if CONF.input_data:
              data = yaml.safe_load(CONF.input_data)
          else:
              with open(CONF.input_data_file) as f:
                  data = yaml.safe_load(f)
          LOG.debug('Input data: %s', data)
  
          mgr = manager.Manager(data)
          if actions:
              for action in actions:
                  getattr(mgr, action)()
      except Exception as exc:
          handle_exception(exc)
  
  
  if __name__ == '__main__':
      main()
  
subject: Add base yaml support for input_data