You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Chun-Hung Hsiao <ch...@apache.org> on 2018/04/04 23:22:54 UTC

Review Request 66457: Made resource provider API aware of workloads.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/
-----------------------------------------------------------

Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.


Bugs: MESOS-8760
    https://issues.apache.org/jira/browse/MESOS-8760


Repository: mesos


Description
-------

This patch introduces a breaking change to change `PublishResources` to
`ApplyResourceUsage`, so the resource provider is aware of workloads.
For local resource providers, a workload is a container, and this call
is responsible to prepare the resources for each container. For external
resource providers, a workload is a framework, so this call can bookkeep
the resource usage for each framework and inform the allocator after a
failover.

Note that this call is designed to report ALL resources used by every
workload on an agent, so it can handle resources without identifiers.


Diffs
-----

  include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
  include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 


Diff: https://reviews.apache.org/r/66457/diff/1/


Testing
-------

This patch cannot be compiled standalone. Tests will be done later in the chain.


Thanks,

Chun-Hung Hsiao


Re: Review Request 66457: Made resource provider API aware of workloads.

Posted by Mesos Reviewbot <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/#review200531
-----------------------------------------------------------



Bad patch!

Reviews applied: [66457, 66418, 66411, 66410, 66409, 66408, 66407, 66398]

Failed command: python support/apply-reviews.py -n -r 66398

Error:
2018-04-05 00:42:06 URL:https://reviews.apache.org/r/66398/diff/raw/ [1889/1889] -> "66398.patch" [1]
error: missing binary patch data for '3rdparty/csi-0.2.0.tar.gz'
error: binary patch does not apply to '3rdparty/csi-0.2.0.tar.gz'
error: 3rdparty/csi-0.2.0.tar.gz: patch does not apply

Full log: https://builds.apache.org/job/Mesos-Reviewbot/22100/console

- Mesos Reviewbot


On April 4, 2018, 11:22 p.m., Chun-Hung Hsiao wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66457/
> -----------------------------------------------------------
> 
> (Updated April 4, 2018, 11:22 p.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.
> 
> 
> Bugs: MESOS-8760
>     https://issues.apache.org/jira/browse/MESOS-8760
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch introduces a breaking change to change `PublishResources` to
> `ApplyResourceUsage`, so the resource provider is aware of workloads.
> For local resource providers, a workload is a container, and this call
> is responsible to prepare the resources for each container. For external
> resource providers, a workload is a framework, so this call can bookkeep
> the resource usage for each framework and inform the allocator after a
> failover.
> 
> Note that this call is designed to report ALL resources used by every
> workload on an agent, so it can handle resources without identifiers.
> 
> 
> Diffs
> -----
> 
>   include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
>   include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 
> 
> 
> Diff: https://reviews.apache.org/r/66457/diff/1/
> 
> 
> Testing
> -------
> 
> This patch cannot be compiled standalone. Tests will be done later in the chain.
> 
> 
> Thanks,
> 
> Chun-Hung Hsiao
> 
>


Re: Review Request 66457: Made resource provider API aware of workloads.

Posted by Mesos Reviewbot Windows <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/#review200528
-----------------------------------------------------------



FAIL: Failed to apply the dependent review: 66398.

Failed command: `python.exe .\support\apply-reviews.py -n -r 66398`

All the build artifacts available at: http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457

Relevant logs:

- [apply-review-66398-stdout.log](http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457/logs/apply-review-66398-stdout.log):

```
error: missing binary patch data for '3rdparty/csi-0.2.0.tar.gz'
error: binary patch does not apply to '3rdparty/csi-0.2.0.tar.gz'
error: 3rdparty/csi-0.2.0.tar.gz: patch does not apply
```

- Mesos Reviewbot Windows


On April 4, 2018, 4:22 p.m., Chun-Hung Hsiao wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66457/
> -----------------------------------------------------------
> 
> (Updated April 4, 2018, 4:22 p.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.
> 
> 
> Bugs: MESOS-8760
>     https://issues.apache.org/jira/browse/MESOS-8760
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch introduces a breaking change to change `PublishResources` to
> `ApplyResourceUsage`, so the resource provider is aware of workloads.
> For local resource providers, a workload is a container, and this call
> is responsible to prepare the resources for each container. For external
> resource providers, a workload is a framework, so this call can bookkeep
> the resource usage for each framework and inform the allocator after a
> failover.
> 
> Note that this call is designed to report ALL resources used by every
> workload on an agent, so it can handle resources without identifiers.
> 
> 
> Diffs
> -----
> 
>   include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
>   include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 
> 
> 
> Diff: https://reviews.apache.org/r/66457/diff/1/
> 
> 
> Testing
> -------
> 
> This patch cannot be compiled standalone. Tests will be done later in the chain.
> 
> 
> Thanks,
> 
> Chun-Hung Hsiao
> 
>


Re: Review Request 66457: WIP: Made resource provider API aware of workloads.

Posted by Mesos Reviewbot Windows <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/#review200959
-----------------------------------------------------------



FAIL: Some of the unit tests failed. Please check the relevant logs.

Reviews applied: `['66457']`

Failed command: `Start-MesosCITesting`

All the build artifacts available at: http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457

Relevant logs:

- [mesos-tests-cmake-stdout.log](http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457/logs/mesos-tests-cmake-stdout.log):

```
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\winport.c(205): warning C4716: 'pthread_cond_wait': must return a value [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\zookeeper.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(124): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(128): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(279): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(301): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(368): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(372): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(512): warning C4267: 'function': conversion from 'size_t' to 'int', possible loss of data [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(543): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(548): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]
         d:\dcos\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8\src\c\src\cli.c(569): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8\src\zookeeper-3.4.8-build\cli.vcxproj] [D:\DCOS\mesos\3rdparty\zookeeper-3.4.8.vcxproj]


       "D:\DCOS\mesos\src\tests\mesos-tests.vcxproj" (default target) (1) ->
       "D:\DCOS\mesos\src\java\mesos-java.vcxproj" (default target) (15) ->
       (ClCompile target) -> 
         d:\dcos\mesos\mesos\include\mesos\resource_provider\resource_provider.hpp(30): error C3083: 'UpdatePublishResourcesStatus': the symbol to the left of a '::' must be a type (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\resource_provider\resource_provider.hpp(30): error C2039: 'Status': is not a member of 'mesos::resource_provider::Call' (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\resource_provider\resource_provider.hpp(32): error C3083: 'UpdatePublishResourcesStatus': the symbol to the left of a '::' must be a type (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\resource_provider\resource_provider.hpp(32): error C2039: 'Status_Name': is not a member of 'mesos::resource_provider::Call' (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\v1\resource_provider\resource_provider.hpp(31): error C3083: 'UpdatePublishResourcesStatus': the symbol to the left of a '::' must be a type (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\v1\resource_provider\resource_provider.hpp(31): error C2039: 'Status': is not a member of 'mesos::v1::resource_provider::Call' (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\v1\resource_provider\resource_provider.hpp(33): error C3083: 'UpdatePublishResourcesStatus': the symbol to the left of a '::' must be a type (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]
         d:\dcos\mesos\mesos\include\mesos\v1\resource_provider\resource_provider.hpp(33): error C2039: 'Status_Name': is not a member of 'mesos::v1::resource_provider::Call' (compiling source file D:\DCOS\mesos\mesos\src\java\jni\org_apache_mesos_v1_scheduler_V0Mesos.cpp) [D:\DCOS\mesos\src\java\mesos-java.vcxproj]

    172 Warning(s)
    8 Error(s)

Time Elapsed 00:07:18.95
```

- Mesos Reviewbot Windows


On April 11, 2018, 2:38 a.m., Chun-Hung Hsiao wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66457/
> -----------------------------------------------------------
> 
> (Updated April 11, 2018, 2:38 a.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.
> 
> 
> Bugs: MESOS-8760
>     https://issues.apache.org/jira/browse/MESOS-8760
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch introduces a breaking change to change `PublishResources` to
> `UpdateResourceUsage`, so the resource provider is aware of workloads.
> For local resource providers, a workload is a container, and this call
> is responsible to prepare the resources for each container. For external
> resource providers, a workload is a framework, so this call can bookkeep
> the resource usage for each framework and inform the allocator after a
> failover.
> 
> Note that this call is designed to report ALL resources used by every
> workload on an agent, so it can handle resources without identifiers.
> 
> 
> Diffs
> -----
> 
>   include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
>   include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 
> 
> 
> Diff: https://reviews.apache.org/r/66457/diff/2/
> 
> 
> Testing
> -------
> 
> This patch cannot be compiled standalone. Tests will be done later in the chain.
> 
> 
> Thanks,
> 
> Chun-Hung Hsiao
> 
>


Re: Review Request 66457: WIP: Made resource provider API aware of workloads.

Posted by Mesos Reviewbot <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/#review200885
-----------------------------------------------------------



Bad patch!

Reviews applied: [66457, 66418, 66411, 66410, 66409, 66408, 66407, 66398]

Failed command: python support/apply-reviews.py -n -r 66398

Error:
2018-04-11 04:24:35 URL:https://reviews.apache.org/r/66398/diff/raw/ [1889/1889] -> "66398.patch" [1]
error: missing binary patch data for '3rdparty/csi-0.2.0.tar.gz'
error: binary patch does not apply to '3rdparty/csi-0.2.0.tar.gz'
error: 3rdparty/csi-0.2.0.tar.gz: patch does not apply

Full log: https://builds.apache.org/job/Mesos-Reviewbot/22154/console

- Mesos Reviewbot


On April 11, 2018, 2:38 a.m., Chun-Hung Hsiao wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66457/
> -----------------------------------------------------------
> 
> (Updated April 11, 2018, 2:38 a.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.
> 
> 
> Bugs: MESOS-8760
>     https://issues.apache.org/jira/browse/MESOS-8760
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch introduces a breaking change to change `PublishResources` to
> `UpdateResourceUsage`, so the resource provider is aware of workloads.
> For local resource providers, a workload is a container, and this call
> is responsible to prepare the resources for each container. For external
> resource providers, a workload is a framework, so this call can bookkeep
> the resource usage for each framework and inform the allocator after a
> failover.
> 
> Note that this call is designed to report ALL resources used by every
> workload on an agent, so it can handle resources without identifiers.
> 
> 
> Diffs
> -----
> 
>   include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
>   include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 
> 
> 
> Diff: https://reviews.apache.org/r/66457/diff/2/
> 
> 
> Testing
> -------
> 
> This patch cannot be compiled standalone. Tests will be done later in the chain.
> 
> 
> Thanks,
> 
> Chun-Hung Hsiao
> 
>


Re: Review Request 66457: WIP: Made resource provider API aware of workloads.

Posted by Mesos Reviewbot Windows <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/#review200874
-----------------------------------------------------------



FAIL: Failed to apply the dependent review: 66398.

Failed command: `python.exe .\support\apply-reviews.py -n -r 66398`

All the build artifacts available at: http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457

Relevant logs:

- [apply-review-66398-stdout.log](http://dcos-win.westus.cloudapp.azure.com/mesos-build/review/66457/logs/apply-review-66398-stdout.log):

```
error: missing binary patch data for '3rdparty/csi-0.2.0.tar.gz'
error: binary patch does not apply to '3rdparty/csi-0.2.0.tar.gz'
error: 3rdparty/csi-0.2.0.tar.gz: patch does not apply
```

- Mesos Reviewbot Windows


On April 11, 2018, 2:38 a.m., Chun-Hung Hsiao wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66457/
> -----------------------------------------------------------
> 
> (Updated April 11, 2018, 2:38 a.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.
> 
> 
> Bugs: MESOS-8760
>     https://issues.apache.org/jira/browse/MESOS-8760
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch introduces a breaking change to change `PublishResources` to
> `UpdateResourceUsage`, so the resource provider is aware of workloads.
> For local resource providers, a workload is a container, and this call
> is responsible to prepare the resources for each container. For external
> resource providers, a workload is a framework, so this call can bookkeep
> the resource usage for each framework and inform the allocator after a
> failover.
> 
> Note that this call is designed to report ALL resources used by every
> workload on an agent, so it can handle resources without identifiers.
> 
> 
> Diffs
> -----
> 
>   include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
>   include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 
> 
> 
> Diff: https://reviews.apache.org/r/66457/diff/2/
> 
> 
> Testing
> -------
> 
> This patch cannot be compiled standalone. Tests will be done later in the chain.
> 
> 
> Thanks,
> 
> Chun-Hung Hsiao
> 
>


Re: Review Request 66457: WIP: Made resource provider API aware of workloads.

Posted by Chun-Hung Hsiao <ch...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66457/
-----------------------------------------------------------

(Updated April 11, 2018, 2:38 a.m.)


Review request for mesos, Benjamin Bannier, Jie Yu, and Jan Schlicht.


Changes
-------

Rename `ApplyResourceUsage` to `UpdateResourceUsage`.


Summary (updated)
-----------------

WIP: Made resource provider API aware of workloads.


Bugs: MESOS-8760
    https://issues.apache.org/jira/browse/MESOS-8760


Repository: mesos


Description (updated)
-------

This patch introduces a breaking change to change `PublishResources` to
`UpdateResourceUsage`, so the resource provider is aware of workloads.
For local resource providers, a workload is a container, and this call
is responsible to prepare the resources for each container. For external
resource providers, a workload is a framework, so this call can bookkeep
the resource usage for each framework and inform the allocator after a
failover.

Note that this call is designed to report ALL resources used by every
workload on an agent, so it can handle resources without identifiers.


Diffs (updated)
-----

  include/mesos/resource_provider/resource_provider.proto db7c751bb61fb1ee2421015dcbefc021c3afbdac 
  include/mesos/v1/resource_provider/resource_provider.proto 42bc050ed01a272603a41ab052ed75d799dd76e2 


Diff: https://reviews.apache.org/r/66457/diff/2/

Changes: https://reviews.apache.org/r/66457/diff/1-2/


Testing
-------

This patch cannot be compiled standalone. Tests will be done later in the chain.


Thanks,

Chun-Hung Hsiao