<!-- 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" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="11" usage_id="8" id="8" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1"/>
<cloud_usage usage_type="1" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="12" usage_id="7" id="7" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1"/>
<cloud_usage usage_type="1" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="13" usage_id="6" id="6" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1"/>

<cloud_usage usage_type="6" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="1" usage_id="16" id="15" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1"/>
<cloud_usage usage_type="6" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="1" usage_id="17" id="16" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1"/>

<cloud_usage usage_type="6" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="5" usage_id="14" id="9" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1" />
<cloud_usage usage_type="8" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="6" usage_id="14" id="10" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1" />
<cloud_usage usage_type="7" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="7" usage_id="16" id="11" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1" />

<cloud_usage usage_type="9" account_id="1" domain_id="1" description="test" usage_display=" "  raw_usage="8" usage_id="18" id="12" start_date="2019-01-01 00:00:01" end_date="2019-01-01 00:00:01" zone_id="1" />

<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:01"/>
<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:02"/>
<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:03"/>
<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:04"/>
<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:05"/>
<usage_volume id="3" zone_id="1" account_id="1" domain_id="1" created="2019-01-01 00:00:06"/>

<usage_vm_instance usage_type="1" vm_instance_id="1" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:01"/>
<usage_vm_instance usage_type="1" vm_instance_id="1" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:02"/>
<usage_vm_instance usage_type="1" vm_instance_id="2" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:03"/>
<usage_vm_instance usage_type="1" vm_instance_id="2" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:04"/>
<usage_vm_instance usage_type="1" vm_instance_id="3" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:05"/>
<usage_vm_instance usage_type="1" vm_instance_id="3" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:06"/>
<usage_vm_instance usage_type="1" vm_instance_id="3" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:07"/>
<usage_vm_instance usage_type="1" vm_instance_id="3" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:08"/>

<usage_vm_instance usage_type="2" vm_instance_id="1" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:08"/>
<usage_vm_instance usage_type="2" vm_instance_id="1" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:10"/>
<usage_vm_instance usage_type="2" vm_instance_id="2" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:11"/>
<usage_vm_instance usage_type="2" vm_instance_id="2" zone_id="1" account_id="1" vm_name="test" service_offering_id="1" template_id="1" start_date="2019-01-01 00:00:21"/>
</dataset>
