##### SUMMARY
Trying to set the boot order on a Huawei 2288H V5 via iBMC/redfish, redfish_config module fails because it needs to set the 4 `BootTypeOrderX` at the same time, and we currently only have the option to set 1 at a time

This report is in between `Bug Report` and `Feature Idea` 

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
redfish_config

##### ANSIBLE VERSION
```
ansible 2.9.0.dev0
  config file = /home/echampetier/git/ops/provisioning/ansible.cfg
  configured module search path = [u'/home/echampetier/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.16 (default, Apr 30 2019, 15:54:43) [GCC 9.0.1 20190312 (Red Hat 9.0.1-0.10)]
```

##### CONFIGURATION
```
ANSIBLE_PIPELINING(/home/echampetier/git/ops/provisioning/ansible.cfg) = True
DEFAULT_CALLBACK_WHITELIST(/home/echampetier/git/ops/provisioning/ansible.cfg) = [u'profile_tasks']
DEFAULT_REMOTE_USER(/home/echampetier/git/ops/provisioning/ansible.cfg) = root
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Fedora 30
Huawei 2288H V5 with iBMC 3.55 (U4282)

##### STEPS TO REPRODUCE
```yaml
- name: Set Bios config
  redfish_config:
    category: Systems
    command: SetBiosAttributes
    bios_attribute_name: "BootTypeOrder0"
    bios_attribute_value: "Others"
    baseuri: "{{ ibmc_ip }}"
    username: "{{ ibmc_user }}"
    password: "{{ ibmc_pass }}"
  delegate_to: localhost
```


##### EXPECTED RESULTS
It works !


##### ACTUAL RESULTS
```
Using module file /usr/lib/python2.7/site-packages/ansible/modules/remote_management/redfish/redfish_config.py
Pipelining is enabled.
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: echampetier
<localhost> EXEC /bin/sh -c '/usr/bin/python2 && sleep 0'
fatal: [192.168.1.3 -> localhost]: FAILED! => {
    "changed": false, 
    "invocation": {
        "module_args": {
            "baseuri": "192.168.1.2", 
            "bios_attribute_name": "BootTypeOrder0", 
            "bios_attribute_value": "Others", 
            "category": "Systems", 
            "command": [
                "SetBiosAttributes"
            ], 
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", 
            "timeout": 10, 
            "username": "Administrator"
        }
    }, 
    "msg": "HTTP Error 400 on PATCH request to 'https://192.168.1.2/redfish/v1/Systems/1/Bios/Settings', extended message: 'Failed to set the BIOS boot order.'"
}
```
When using curl:
```
$ curl -u 'Administrator:<redacted>' -XPATCH https://192.168.1.2/redfish/v1/Systems/1/Bios/Settings -d '{"Attributes": {"BootTypeOrder0": "Others"}}' -k -vvv -H 'Content-Type: application/json' -H 'If-Match: W/"6168147f"' -s | jq .
...
< HTTP/1.1 400 Bad Request
< Date: Mon, 05 Aug 2019 21:31:18 GMT
< X-Frame-Options: SAMEORIGIN
< X-Download-Options: noopen
< Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' wss://*:*; img-src 'self' data:; frame-src 'self'; font-src 'self'; object-src 'self'; style-src 'self' 'unsafe-inline'
< OData-Version: 4.0
< Cache-Control: max-age=0, no-cache, no-store, must-revalidate
< Content-Length: 535
< X-XSS-Protection: 1; mode=block
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< X-Content-Type-Options: nosniff
< Expires: 0
< Connection: close
< Content-Type: application/json;charset=utf-8
{
  "error": {
    "code": "Base.1.0.GeneralError",
    "message": "A general error has occurred. See ExtendedInfo for more information.",
    "@Message.ExtendedInfo": [
      {
        "@odata.type": "/redfish/v1/$metadata#MessageRegistry.1.0.0.MessageRegistry",
        "MessageId": "iBMC.1.0.SettingBootOrderFailed",
        "RelatedProperties": [],
        "Message": "Failed to set the BIOS boot order.",
        "MessageArgs": [],
        "Severity": "Warning",
        "Resolution": "Check that the four property names are correct, all the four properties are set, and the property values are different from each other."
      }
    ]
  }
}
```
And when sending the 4 at the same time it works
```
$ curl -u 'Administrator:<redacted>' -XPATCH https://192.168.1.2/redfish/v1/Systems/1/Bios/Settings -d '{"Attributes": {"BootTypeOrder0":"Others", "BootTypeOrder1":"HardDiskDrive", "BootTypeOrder2":"DVDROMDrive", "BootTypeOrder3":"PXE"}}' -k -vvv -H 'Content-Type: application/json' -H 'If-Match: W/"6168147f"' -s | jq .
...
< HTTP/1.1 200 OK
< Date: Mon, 05 Aug 2019 21:34:08 GMT
< X-Frame-Options: SAMEORIGIN
< X-Download-Options: noopen
< Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' wss://*:*; img-src 'self' data:; frame-src 'self'; font-src 'self'; object-src 'self'; style-src 'self' 'unsafe-inline'
< OData-Version: 4.0
< Cache-Control: max-age=0, no-cache, no-store, must-revalidate
< ETag: W/"7d41337e"
< Content-Length: 705
< X-XSS-Protection: 1; mode=block
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< X-Content-Type-Options: nosniff
< Expires: 0
< Content-Type: application/json;charset=utf-8
< 
{
  "@odata.context": "/redfish/v1/$metadata#Systems/Members/1/Bios/Settings/$entity",
  "@odata.id": "/redfish/v1/Systems/1/Bios/Settings",
  "@odata.type": "#Bios.v1_0_0.Bios",
  "Id": "Settings",
  "Name": "BIOS Configuration Pending Settings",
  "AttributeRegistry": "BiosAttributeRegistry.1.9.9",
  "Attributes": {
    "BootTypeOrder0": "Others",
    "BootTypeOrder1": "HardDiskDrive",
    "BootTypeOrder2": "DVDROMDrive",
    "BootTypeOrder3": "PXE"
  },
  "Actions": {
    "Oem": {
      "Huawei": {
        "#Settings.Revoke": {
          "target": "/redfish/v1/Systems/1/Bios/Settings/Actions/Oem/Huawei/Settings.Revoke",
          "@Redfish.ActionInfo": "/redfish/v1/Systems/1/Bios/Settings/SettingsRevokeActionInfo"
        }
      }
    }
  }
}
```

if property in device:
                            drive_result[property] = device[property]
                    drive_results.append(drive_result)
                drives = {'Controller': controller_name,
                          'Drives': drive_results}
                result["entries"].append(drives)
        return result
    def get_multi_disk_inventory(self):
        return self.aggregate(self.get_disk_inventory)
    def get_volume_inventory(self, systems_uri):
        result = {'entries': []}
        controller_list = []
        volume_list = []
        
        properties = ['Id', 'Name', 'RAIDType', 'VolumeType', 'BlockSizeBytes',
                      'Capacity', 'CapacityBytes', 'CapacitySources',
                      'Encrypted', 'EncryptionTypes', 'Identifiers',
                      'Operations', 'OptimumIOSizeBytes', 'AccessCapabilities',
                      'AllocatedPools', 'Status']
        
        response = self.get_request(self.root_uri + systems_uri)
        if response['ret'] is False:
            return response
        data = response['data']
        if 'SimpleStorage' not in data and 'Storage' not in data:
            return {'ret': False, 'msg': "SimpleStorage and Storage resource \
                     not found"}
        if 'Storage' in data:
            
            storage_uri = data[u'Storage'][u'@odata.id']