<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
  license agreements. See the NOTICE file distributed with this work for additional 
  information regarding copyright ownership. The ASF licenses this file to you 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. -->
<!-- cloud_usage -->
<dataset>
<cloud_usage usage_type="1" raw_usage="11" usage_id="8" id="8" start_date="1" zone_id="1"/>
<cloud_usage usage_type="1" raw_usage="13" usage_id="6" id="6" start_date="1" zone_id="1"/>

<cloud_usage usage_type="6" usage_id="16" id="7" start_date="1" zone_id="1"/>
<cloud_usage usage_type="8" usage_id="14" id="7" start_date="1" zone_id="1" />

<cloud_usage usage_type="9" usage_id="18" id="7" start_date="1" zone_id="1" />

<usage_volume id="2" />
<usage_volume id="4" />

<usage_vm_instance usage_type="1" vm_instance_id="1" />
<usage_vm_instance usage_type="2" vm_instance_id="2" />
<usage_vm_instance usage_type="2" vm_instance_id="2" />
</dataset>
