description: >
    Implement to provide an interface to start a failover.  Depending on the
    implementation, this may reside on the 'from' or 'to' object (or both).  The
    'Options' method argument provides a mechanism to provide implementation
    specific options.

methods:
    - name: StartFailover
      description: >
          Starts a failover operation.
      parameters:
          - name: Requester
            type: enum[self.Requester]
            description: >
                Identifies who's requesting the failover
          - name: Options
            type: dict[string, variant[boolean]]
            description: >
                Additional options. The key is the string version of the Options
                enum, in the form of
                'xyz.openbmc_project.Control.Failover.Options.X'.
      errors:
          - xyz.openbmc_project.Common.Error.Unavailable

enumerations:
    - name: Requester
      description: >
          Who is requesting the failover.
      values:
          - name: Host
            description: >
                The host is requesting the failover.
          - name: Redfish
            description: >
                A Redfish client is requesting the failover.
          - name: SystemConfig
            description: >
                A system config checker on the BMC is requesting the failover.
          - name: Tool
            description: >
                A command line tool is requesting the failover.
    - name: Options
      description: >
          Available options for starting the failover.
      values:
          - name: "Force"
            description: >
                A boolean option to force the failover when it would normally
                not be available.  The checks it bypasses are implementation
                dependent.
