Merge lp:~andreserl/maas/lp1665143 into lp:maas/2.1
Status: | Superseded |
---|---|
Proposed branch: | lp:~andreserl/maas/lp1665143 |
Merge into: | lp:maas/2.1 |
Diff against target: |
84231 lines (+48827/-17108) (has conflicts) 632 files modified
.bzrignore (+5/-7) .gitignore (+5/-9) HACKING.txt (+22/-5) MANIFEST.in (+18/-5) Makefile (+88/-60) buildout.cfg (+72/-39) docs/_templates/maas/static/css/main.css (+14/-0) docs/about.rst (+0/-50) docs/bootsources.rst (+0/-113) docs/changelog.rst (+99/-874) docs/conf.py (+2/-1) docs/configure.rst (+0/-135) docs/development/notifications.rst (+198/-0) docs/devices.rst (+0/-28) docs/dhcpsnippets.rst (+0/-111) docs/getting-help.rst (+0/-49) docs/ha.rst (+0/-290) docs/hardware-enablement-kernels.rst (+0/-80) docs/index.rst (+1/-55) docs/installing-ubuntu.rst (+0/-36) docs/ipv6.rst (+0/-150) docs/juju-quick-start.rst (+0/-145) docs/kernel-options.rst (+0/-38) docs/networking.rst (+0/-270) docs/nodes.rst (+0/-98) docs/orientation.rst (+0/-107) docs/os-support.rst (+0/-121) docs/packagerepositories.rst (+0/-71) docs/physical-zones.rst (+0/-132) docs/power-driver-capabilities.rst (+0/-48) docs/proxy.rst (+0/-81) docs/rack-configuration.rst (+0/-192) docs/releases.rst (+21/-54) docs/sstreams-mirror.rst (+0/-64) docs/static-ips.rst (+0/-53) docs/storage.rst (+0/-679) docs/tags.rst (+0/-124) media/README (+4/-4) required-packages/dev (+5/-3) required-packages/forbidden (+3/-0) required-packages/yakkety (+2/-0) required-packages/zesty (+2/-0) services/reloader/run (+1/-1) src/maascli/cli.py (+2/-2) src/maasserver/__init__.py (+1/-1) src/maasserver/__main__.py (+9/-0) src/maasserver/api/blockdevices.py (+1/-1) src/maasserver/api/boot_source_selections.py (+2/-0) src/maasserver/api/dhcpsnippets.py (+1/-1) src/maasserver/api/dnsresourcerecords.py (+2/-2) src/maasserver/api/dnsresources.py (+1/-1) src/maasserver/api/doc.py (+52/-10) src/maasserver/api/doc_handler.py (+14/-10) src/maasserver/api/domains.py (+1/-1) src/maasserver/api/fabrics.py (+1/-1) src/maasserver/api/fannetworks.py (+1/-1) src/maasserver/api/interfaces.py (+8/-8) src/maasserver/api/ipranges.py (+1/-1) src/maasserver/api/maas.py (+1/-1) src/maasserver/api/machines.py (+37/-27) src/maasserver/api/nodes.py (+57/-7) src/maasserver/api/notification.py (+145/-0) src/maasserver/api/packagerepositories.py (+1/-1) src/maasserver/api/partitions.py (+1/-1) src/maasserver/api/pods.py (+229/-0) src/maasserver/api/rackcontrollers.py (+3/-3) src/maasserver/api/results.py (+52/-13) src/maasserver/api/spaces.py (+76/-5) src/maasserver/api/staticroutes.py (+1/-1) src/maasserver/api/subnets.py (+185/-52) src/maasserver/api/tags.py (+1/-2) src/maasserver/api/tests/test_api.py (+5/-5) src/maasserver/api/tests/test_boot_resources.py (+2/-2) src/maasserver/api/tests/test_boot_source_selections.py (+1/-1) src/maasserver/api/tests/test_commissioning.py (+199/-103) src/maasserver/api/tests/test_dhcpsnippets.py (+3/-3) src/maasserver/api/tests/test_discoveries.py (+5/-8) src/maasserver/api/tests/test_doc.py (+35/-15) src/maasserver/api/tests/test_enlistment.py (+6/-4) src/maasserver/api/tests/test_events.py (+0/-1) src/maasserver/api/tests/test_interfaces.py (+0/-2) src/maasserver/api/tests/test_ipaddresses.py (+0/-10) src/maasserver/api/tests/test_licensekey.py (+1/-1) src/maasserver/api/tests/test_maas.py (+1/-1) src/maasserver/api/tests/test_machine.py (+46/-59) src/maasserver/api/tests/test_machines.py (+43/-5) src/maasserver/api/tests/test_node.py (+123/-8) src/maasserver/api/tests/test_nodes.py (+0/-1) src/maasserver/api/tests/test_notification.py (+313/-0) src/maasserver/api/tests/test_packagerepositories.py (+6/-4) src/maasserver/api/tests/test_pods.py (+365/-0) src/maasserver/api/tests/test_rackcontroller.py (+7/-7) src/maasserver/api/tests/test_spaces.py (+126/-0) src/maasserver/api/tests/test_subnets.py (+79/-41) src/maasserver/api/tests/test_tag.py (+5/-3) src/maasserver/api/tests/test_utils.py (+11/-3) src/maasserver/api/tests/test_vlans.py (+160/-1) src/maasserver/api/tests/test_volume_groups.py (+1/-1) src/maasserver/api/vlans.py (+31/-17) src/maasserver/bootresources.py (+43/-17) src/maasserver/bootsources.py (+3/-1) src/maasserver/clusterrpc/driver_parameters.py (+77/-53) src/maasserver/clusterrpc/pods.py (+161/-0) src/maasserver/clusterrpc/power.py (+1/-1) src/maasserver/clusterrpc/testing/driver_parameters.py (+27/-15) src/maasserver/clusterrpc/tests/test_boot_images.py (+1/-2) src/maasserver/clusterrpc/tests/test_driver_parameters.py (+56/-42) src/maasserver/clusterrpc/tests/test_pods.py (+368/-0) src/maasserver/clusterrpc/utils.py (+1/-1) src/maasserver/components.py (+30/-20) src/maasserver/compose_preseed.py (+39/-5) src/maasserver/context_processors.py (+0/-2) src/maasserver/dbviews.py (+9/-24) src/maasserver/dhcp.py (+49/-67) src/maasserver/djangosettings/demo.py (+1/-1) src/maasserver/djangosettings/development.py (+6/-7) src/maasserver/djangosettings/settings.py (+3/-3) src/maasserver/djangosettings/tests/test_settings.py (+2/-2) src/maasserver/dns/tests/test_config.py (+3/-3) src/maasserver/dns/tests/test_zonegenerator.py (+29/-42) src/maasserver/enum.py (+38/-1) src/maasserver/eventloop.py (+2/-16) src/maasserver/exceptions.py (+14/-3) src/maasserver/fields.py (+13/-0) src/maasserver/forms/__init__.py (+100/-97) src/maasserver/forms/ephemeral.py (+130/-30) src/maasserver/forms/notification.py (+39/-0) src/maasserver/forms/pods.py (+287/-0) src/maasserver/forms/settings.py (+33/-0) src/maasserver/forms/subnet.py (+13/-13) src/maasserver/forms/tests/test_config.py (+2/-4) src/maasserver/forms/tests/test_controller.py (+2/-2) src/maasserver/forms/tests/test_dhcpsnippet.py (+4/-4) src/maasserver/forms/tests/test_dnsdata.py (+1/-1) src/maasserver/forms/tests/test_dnsresource.py (+1/-1) src/maasserver/forms/tests/test_domain.py (+1/-1) src/maasserver/forms/tests/test_ephemeral.py (+174/-24) src/maasserver/forms/tests/test_fabric.py (+1/-1) src/maasserver/forms/tests/test_fannetwork.py (+1/-1) src/maasserver/forms/tests/test_filesystem.py (+1/-1) src/maasserver/forms/tests/test_helpers.py (+2/-2) src/maasserver/forms/tests/test_interface.py (+1/-1) src/maasserver/forms/tests/test_interface_link.py (+8/-43) src/maasserver/forms/tests/test_iprange.py (+1/-1) src/maasserver/forms/tests/test_machine.py (+2/-2) src/maasserver/forms/tests/test_notification.py (+108/-0) src/maasserver/forms/tests/test_packagerepository.py (+1/-1) src/maasserver/forms/tests/test_pods.py (+473/-0) src/maasserver/forms/tests/test_settings.py (+2/-6) src/maasserver/forms/tests/test_space.py (+1/-1) src/maasserver/forms/tests/test_staticroute.py (+1/-1) src/maasserver/forms/tests/test_subnet.py (+48/-52) src/maasserver/forms/tests/test_ubuntu.py (+1/-1) src/maasserver/forms/tests/test_vlan.py (+126/-1) src/maasserver/forms/vlan.py (+49/-7) src/maasserver/locks.py (+3/-3) src/maasserver/management/commands/dbupgrade.py (+50/-6) src/maasserver/management/commands/tests/test_dbupgrade.py (+4/-1) src/maasserver/migrations/builtin/maasserver/0016_migrate_power_data_node_to_bmc.py (+9/-7) src/maasserver/migrations/builtin/maasserver/0022_extract_ip_for_bmcs.py (+6/-3) src/maasserver/migrations/builtin/maasserver/0027_replace_static_range_with_admin_reserved_ranges.py (+1/-1) src/maasserver/migrations/builtin/maasserver/0056_add_description_to_fabric_and_space.py (+1/-1) src/maasserver/migrations/builtin/maasserver/0094_add_unmanaged_subnets.py (+22/-0) src/maasserver/migrations/builtin/maasserver/0095_vlan_relay_vlan.py (+23/-0) src/maasserver/migrations/builtin/maasserver/0096_set_default_vlan_field.py (+23/-0) src/maasserver/migrations/builtin/maasserver/0097_node_chassis_storage_hints.py (+73/-0) src/maasserver/migrations/builtin/maasserver/0098_add_space_to_vlan.py (+24/-0) src/maasserver/migrations/builtin/maasserver/0099_set_default_vlan_field.py (+24/-0) src/maasserver/migrations/builtin/maasserver/0100_migrate_spaces_from_subnet_to_vlan.py (+47/-0) src/maasserver/migrations/builtin/maasserver/0101_filesystem_btrfs_support.py (+22/-0) src/maasserver/migrations/builtin/maasserver/0102_remove_space_from_subnet.py (+25/-0) src/maasserver/migrations/builtin/maasserver/0103_notifications.py (+44/-0) src/maasserver/migrations/builtin/maasserver/0104_notifications_dismissals.py (+27/-0) src/maasserver/migrations/builtin/maasserver/0105_add_script_sets_to_node_model.py (+34/-0) src/maasserver/migrations/builtin/maasserver/0106_testing_status.py (+27/-0) src/maasserver/migrations/builtin/maasserver/0107_chassis_to_pods.py (+107/-0) src/maasserver/migrations/builtin/maasserver/0108_generate_bmc_names.py (+28/-0) src/maasserver/migrations/builtin/maasserver/0109_bmc_names_unique.py (+22/-0) src/maasserver/migrations/builtin/maasserver/0110_notification_category.py (+23/-0) src/maasserver/migrations/builtin/maasserver/0111_remove_component_error.py (+14/-0) src/maasserver/migrations/builtin/maasserver/0112_update_notification.py (+38/-0) src/maasserver/migrations/builtin/maasserver/0113_set_filepath_limit_to_linux_max.py (+27/-0) src/maasserver/migrations/builtin/maasserver/0114_node_dynamic_to_creation_type.py (+26/-0) src/maasserver/models/__init__.py (+15/-7) src/maasserver/models/blockdevice.py (+54/-1) src/maasserver/models/bmc.py (+652/-15) src/maasserver/models/bootsource.py (+1/-1) src/maasserver/models/component_error.py (+0/-30) src/maasserver/models/config.py (+3/-0) src/maasserver/models/event.py (+8/-1) src/maasserver/models/interface.py (+91/-9) src/maasserver/models/node.py (+460/-143) src/maasserver/models/nodeprobeddetails.py (+54/-37) src/maasserver/models/notification.py (+248/-0) src/maasserver/models/podhints.py (+35/-0) src/maasserver/models/signals/bmc.py (+36/-7) src/maasserver/models/signals/nodes.py (+62/-2) src/maasserver/models/signals/tests/test_bmc.py (+29/-1) src/maasserver/models/signals/tests/test_nodes.py (+137/-1) src/maasserver/models/space.py (+15/-2) src/maasserver/models/staticipaddress.py (+207/-28) src/maasserver/models/subnet.py (+82/-23) src/maasserver/models/tests/test_blockdevice.py (+26/-0) src/maasserver/models/tests/test_bmc.py (+518/-3) src/maasserver/models/tests/test_config.py (+32/-1) src/maasserver/models/tests/test_discovery.py (+2/-6) src/maasserver/models/tests/test_dnsdata.py (+12/-8) src/maasserver/models/tests/test_dnspublication.py (+5/-0) src/maasserver/models/tests/test_event.py (+10/-0) src/maasserver/models/tests/test_interface.py (+117/-40) src/maasserver/models/tests/test_managers.py (+3/-3) src/maasserver/models/tests/test_neighbour.py (+2/-2) src/maasserver/models/tests/test_node.py (+715/-240) src/maasserver/models/tests/test_nodeprobeddetails.py (+71/-76) src/maasserver/models/tests/test_notification.py (+265/-0) src/maasserver/models/tests/test_space.py (+16/-7) src/maasserver/models/tests/test_staticipaddress.py (+135/-112) src/maasserver/models/tests/test_subnet.py (+114/-50) src/maasserver/models/tests/test_timestampedmodel.py (+3/-3) src/maasserver/models/tests/test_vlan.py (+28/-0) src/maasserver/models/vlan.py (+19/-0) src/maasserver/node_action.py (+52/-22) src/maasserver/node_constraint_filter_forms.py (+192/-131) src/maasserver/node_status.py (+60/-1) src/maasserver/plugin.py (+2/-6) src/maasserver/populate_tags.py (+2/-2) src/maasserver/preseed.py (+9/-3) src/maasserver/preseed_network.py (+228/-287) src/maasserver/regiondservices/tests/test_ntp.py (+0/-12) src/maasserver/rpc/nodes.py (+8/-7) src/maasserver/rpc/rackcontrollers.py (+10/-3) src/maasserver/rpc/regionservice.py (+16/-19) src/maasserver/rpc/tests/test_nodes.py (+5/-5) src/maasserver/rpc/tests/test_rackcontrollers.py (+7/-1) src/maasserver/rpc/tests/test_regionservice.py (+4/-1) src/maasserver/start_up.py (+3/-0) src/maasserver/static/assets/images/04d2075a-chevron-down.svg (+10/-0) src/maasserver/static/assets/images/1cdcdb82-system-shutdown.svg (+1/-0) src/maasserver/static/assets/images/2355399b-info.svg (+1/-0) src/maasserver/static/assets/images/314a253d-settings.svg (+1/-0) src/maasserver/static/assets/images/3fd57564-mount.svg (+1/-0) src/maasserver/static/assets/images/46b44caf-checkbox-hover.svg (+15/-0) src/maasserver/static/assets/images/480f6014-add-partition.svg (+1/-0) src/maasserver/static/assets/images/501ee9c0-add-logical-volume.svg (+1/-0) src/maasserver/static/assets/images/50fc9223-power-off.svg (+20/-0) src/maasserver/static/assets/images/5777c0c7-warning.svg (+1/-0) src/maasserver/static/assets/images/5c9708d2-add.svg (+1/-0) src/maasserver/static/assets/images/6c395e6d-green-tick.svg (+16/-0) src/maasserver/static/assets/images/82993327-mount.svg (+1/-0) src/maasserver/static/assets/images/89c10794-remove.svg (+1/-0) src/maasserver/static/assets/images/89c6b797-success.svg (+17/-0) src/maasserver/static/assets/images/8b8eb7d5-partition.svg (+1/-0) src/maasserver/static/assets/images/908ee6a0-help.svg (+1/-0) src/maasserver/static/assets/images/9cc42dcc-magnifying_glass.svg (+1/-0) src/maasserver/static/assets/images/a02192e3-debug.svg (+1/-0) src/maasserver/static/assets/images/b2fadbbe-tooltip.svg (+1/-0) src/maasserver/static/assets/images/b5573b6a-delete.svg (+1/-0) src/maasserver/static/assets/images/b562c17f-edit.svg (+1/-0) src/maasserver/static/assets/images/b77e606e-logical-volume.svg (+1/-0) src/maasserver/static/assets/images/b8119c45-power-error.svg (+20/-0) src/maasserver/static/assets/images/d0374f79-tags.svg (+1/-0) src/maasserver/static/assets/images/d53683c4-power-on.svg (+20/-0) src/maasserver/static/assets/images/d730daea-error.svg (+1/-0) src/maasserver/static/assets/images/d760df7b-account.svg (+1/-0) src/maasserver/static/assets/images/d88a05ba-unmount.svg (+1/-0) src/maasserver/static/assets/images/db8d0984-checkbox.svg (+11/-0) src/maasserver/static/assets/images/f3f43376-chevron-up.svg (+10/-0) src/maasserver/static/assets/images/f5453933-sync.svg (+1/-0) src/maasserver/static/assets/images/forms/checkbox-checked.svg (+0/-24) src/maasserver/static/assets/images/forms/checkbox.svg (+0/-23) src/maasserver/static/assets/images/forms/chevron-down.svg (+0/-12) src/maasserver/static/assets/images/forms/chevron-up.svg (+0/-12) src/maasserver/static/assets/images/forms/chevron_down.svg (+0/-12) src/maasserver/static/assets/images/forms/chevron_up.svg (+0/-12) src/maasserver/static/assets/images/logos/logo-ubuntu-orange.svg (+0/-60) src/maasserver/static/assets/images/logos/maas-logo.svg (+0/-63) src/maasserver/static/css/build.css (+1/-0) src/maasserver/static/js/angular/3rdparty/sticky.min.js (+684/-0) src/maasserver/static/js/angular/controllers/dashboard.js (+2/-2) src/maasserver/static/js/angular/controllers/fabric_details.js (+3/-1) src/maasserver/static/js/angular/controllers/networks_list.js (+27/-4) src/maasserver/static/js/angular/controllers/node_details.js (+9/-2) src/maasserver/static/js/angular/controllers/node_events.js (+14/-7) src/maasserver/static/js/angular/controllers/node_result.js (+14/-6) src/maasserver/static/js/angular/controllers/subnet_details.js (+9/-2) src/maasserver/static/js/angular/controllers/tests/test_networks_list.js (+41/-17) src/maasserver/static/js/angular/controllers/tests/test_node_details.js (+33/-0) src/maasserver/static/js/angular/controllers/tests/test_node_events.js (+19/-2) src/maasserver/static/js/angular/controllers/tests/test_node_result.js (+17/-2) src/maasserver/static/js/angular/controllers/tests/test_subnet_details.js (+3/-1) src/maasserver/static/js/angular/controllers/tests/test_vlan_details.js (+57/-7) src/maasserver/static/js/angular/controllers/vlan_details.js (+131/-32) src/maasserver/static/js/angular/directives/call_to_action.js (+4/-6) src/maasserver/static/js/angular/directives/error_overlay.js (+1/-1) src/maasserver/static/js/angular/directives/notifications.js (+102/-0) src/maasserver/static/js/angular/directives/os_select.js (+25/-18) src/maasserver/static/js/angular/directives/power_parameters.js (+2/-2) src/maasserver/static/js/angular/directives/tests/test_notifications.js (+192/-0) src/maasserver/static/js/angular/directives/tests/test_power_parameters.js (+2/-2) src/maasserver/static/js/angular/directives/tests/test_window_width.js (+53/-0) src/maasserver/static/js/angular/directives/version_reloader.js (+10/-5) src/maasserver/static/js/angular/directives/window_width.js (+33/-0) src/maasserver/static/js/angular/factories/events.js (+1/-1) src/maasserver/static/js/angular/factories/notifications.js (+34/-0) src/maasserver/static/js/angular/factories/tests/test_events.js (+1/-1) src/maasserver/static/js/angular/factories/tests/test_notifications.js (+47/-0) src/maasserver/static/js/angular/factories/tests/test_region.js (+6/-2) src/maasserver/static/js/angular/factories/tests/test_vlans.js (+6/-3) src/maasserver/static/js/angular/factories/vlans.js (+12/-7) src/maasserver/static/js/angular/filters/by_space.js (+16/-4) src/maasserver/static/js/angular/filters/by_vlan.js (+0/-15) src/maasserver/static/js/angular/maas.js (+15/-0) src/maasserver/static/js/angular/services/log.js (+93/-0) src/maasserver/static/js/angular/services/tests/test_log.js (+112/-0) src/maasserver/static/js/angular/testing/setup.js (+19/-0) src/maasserver/static/js/prefs.js (+2/-2) src/maasserver/static/js/tests/test_prefs.js (+1/-1) src/maasserver/static/partials/boot-images.html (+23/-23) src/maasserver/static/partials/dashboard.html (+188/-0) src/maasserver/static/partials/domain-details.html (+15/-8) src/maasserver/static/partials/domains-list.html (+10/-6) src/maasserver/static/partials/error.html (+4/-0) src/maasserver/static/partials/fabric-details.html (+16/-8) src/maasserver/static/partials/intro-user.html (+33/-0) src/maasserver/static/partials/intro.html (+71/-0) src/maasserver/static/partials/ipranges.html (+25/-19) src/maasserver/static/partials/networks-list.html (+60/-38) src/maasserver/static/partials/node-details.html (+1052/-826) src/maasserver/static/partials/node-events.html (+7/-3) src/maasserver/static/partials/node-result.html (+9/-1) src/maasserver/static/partials/nodes-list.html (+220/-144) src/maasserver/static/partials/settings.html (+209/-72) src/maasserver/static/partials/space-details.html (+11/-3) src/maasserver/static/partials/ssh-keys.html (+14/-2) src/maasserver/static/partials/subnet-details.html (+85/-28) src/maasserver/static/partials/vlan-details.html (+112/-32) src/maasserver/static/scss/_base.definition-list.scss (+0/-35) src/maasserver/static/scss/_base.maas-gui-vanilla-theme.scss (+80/-0) src/maasserver/static/scss/_base.main.scss (+0/-18) src/maasserver/static/scss/_base.typography.scss (+0/-78) src/maasserver/static/scss/_components.code.scss (+0/-44) src/maasserver/static/scss/_components.list-tree.scss (+0/-57) src/maasserver/static/scss/_components.tabs.scss (+0/-51) src/maasserver/static/scss/_components.tooltips.scss (+0/-125) src/maasserver/static/scss/_helpers.animations.scss (+0/-45) src/maasserver/static/scss/_helpers.borders.scss (+0/-45) src/maasserver/static/scss/_helpers.mixins.scss (+0/-59) src/maasserver/static/scss/_helpers.state.scss (+0/-37) src/maasserver/static/scss/_helpers.vertical-alignment.scss (+0/-15) src/maasserver/static/scss/_layout.row.scss (+0/-19) src/maasserver/static/scss/_layout.wrapper.scss (+0/-42) src/maasserver/static/scss/_pages.scratch.scss (+14/-2) src/maasserver/static/scss/_patterns.accordion.scss (+0/-122) src/maasserver/static/scss/_patterns.action-card.scss (+0/-34) src/maasserver/static/scss/_patterns.header.scss (+0/-64) src/maasserver/static/scss/_patterns.search.scss (+0/-85) src/maasserver/static/scss/_settings.defaults.scss (+0/-80) src/maasserver/static/scss/_settings.fonts.scss (+0/-31) src/maasserver/static/scss/build.scss (+4/-74) src/maasserver/templates/maasserver/base.html (+31/-31) src/maasserver/templates/maasserver/index.html (+10/-12) src/maasserver/templates/maasserver/logout_confirm.html (+15/-9) src/maasserver/templates/maasserver/prefs.html (+3/-3) src/maasserver/templates/maasserver/prefs_add_sslkey.html (+4/-2) src/maasserver/templates/maasserver/settings.html (+24/-18) src/maasserver/templates/maasserver/settings_add_commissioning_script.html (+4/-2) src/maasserver/templates/maasserver/settings_add_license_key.html (+4/-2) src/maasserver/templates/maasserver/settings_commissioning_scripts.html (+1/-1) src/maasserver/templates/maasserver/settings_confirm_delete_commissioning_script.html (+4/-2) src/maasserver/templates/maasserver/settings_confirm_delete_license_key.html (+4/-2) src/maasserver/templates/maasserver/settings_edit_license_key.html (+1/-1) src/maasserver/templates/maasserver/settings_license_keys.html (+1/-1) src/maasserver/templates/maasserver/user_add.html (+4/-2) src/maasserver/templates/maasserver/user_confirm_delete.html (+4/-2) src/maasserver/templates/maasserver/user_edit.html (+8/-4) src/maasserver/templates/maasserver/user_view.html (+2/-2) src/maasserver/templates/maasserver/zone_add.html (+1/-1) src/maasserver/templates/maasserver/zone_confirm_delete.html (+4/-2) src/maasserver/templates/maasserver/zone_detail.html (+2/-2) src/maasserver/templates/maasserver/zone_edit.html (+4/-2) src/maasserver/templates/maasserver/zone_list.html (+6/-6) src/maasserver/templates/registration/login.html (+18/-21) src/maasserver/testing/api.py (+0/-1) src/maasserver/testing/factory.py (+198/-73) src/maasserver/testing/initial.maas_test.sql (+13594/-0) src/maasserver/testing/matchers.py (+34/-2) src/maasserver/testing/resources.py (+266/-0) src/maasserver/testing/sampledata.py (+66/-7) src/maasserver/testing/testcase.py (+112/-154) src/maasserver/testing/tests/test_sampledata.py (+0/-5) src/maasserver/tests/test_auth.py (+0/-5) src/maasserver/tests/test_bootresources.py (+7/-0) src/maasserver/tests/test_bootsources.py (+10/-6) src/maasserver/tests/test_commands.py (+4/-1) src/maasserver/tests/test_commands_dbupgrade.py (+3/-1) src/maasserver/tests/test_components.py (+9/-20) src/maasserver/tests/test_compose_preseed.py (+83/-26) src/maasserver/tests/test_dbviews.py (+6/-11) src/maasserver/tests/test_dhcp.py (+56/-83) src/maasserver/tests/test_docs.py (+54/-0) src/maasserver/tests/test_eventloop.py (+2/-1) src/maasserver/tests/test_fields.py (+23/-9) src/maasserver/tests/test_node_action.py (+136/-54) src/maasserver/tests/test_node_constraint_filter_forms.py (+105/-5) src/maasserver/tests/test_ntp.py (+0/-14) src/maasserver/tests/test_plugin.py (+1/-1) src/maasserver/tests/test_populate_tags.py (+33/-10) src/maasserver/tests/test_preseed.py (+27/-10) src/maasserver/tests/test_preseed_network.py (+4/-4) src/maasserver/tests/test_routablepairs.py (+0/-5) src/maasserver/tests/test_service_monitor.py (+1/-1) src/maasserver/tests/test_start_up.py (+13/-0) src/maasserver/tests/test_storage_layouts.py (+3/-3) src/maasserver/tests/test_third_party_drivers.py (+17/-8) src/maasserver/tests/test_x509.py (+2/-2) src/maasserver/third_party_drivers.py (+11/-8) src/maasserver/triggers/system.py (+58/-1) src/maasserver/triggers/testing.py (+26/-11) src/maasserver/triggers/tests/test_init.py (+227/-1) src/maasserver/triggers/tests/test_system_listener.py (+148/-25) src/maasserver/triggers/tests/test_websocket.py (+0/-127) src/maasserver/triggers/tests/test_websocket_listener.py (+186/-11) src/maasserver/triggers/websocket.py (+113/-10) src/maasserver/urls_api.py (+25/-0) src/maasserver/utils/orm.py (+102/-20) src/maasserver/utils/osystems.py (+1/-1) src/maasserver/utils/tests/test_dblocks.py (+30/-15) src/maasserver/utils/tests/test_dbtasks.py (+1/-1) src/maasserver/utils/tests/test_mac.py (+3/-3) src/maasserver/utils/tests/test_orm.py (+204/-1) src/maasserver/utils/tests/test_osystems.py (+4/-4) src/maasserver/utils/tests/test_signals.py (+2/-2) src/maasserver/utils/tests/test_threads.py (+3/-2) src/maasserver/views/combo.py (+5/-0) src/maasserver/views/tests/test_account.py (+7/-4) src/maasserver/views/tests/test_general.py (+4/-36) src/maasserver/websockets/handlers/__init__.py (+8/-29) src/maasserver/websockets/handlers/config.py (+1/-1) src/maasserver/websockets/handlers/controller.py (+5/-2) src/maasserver/websockets/handlers/device.py (+7/-2) src/maasserver/websockets/handlers/dhcpsnippet.py (+1/-1) src/maasserver/websockets/handlers/fabric.py (+1/-1) src/maasserver/websockets/handlers/general.py (+4/-4) src/maasserver/websockets/handlers/iprange.py (+1/-1) src/maasserver/websockets/handlers/machine.py (+4/-3) src/maasserver/websockets/handlers/node.py (+48/-27) src/maasserver/websockets/handlers/notification.py (+73/-0) src/maasserver/websockets/handlers/packagerepository.py (+1/-1) src/maasserver/websockets/handlers/space.py (+6/-6) src/maasserver/websockets/handlers/staticroute.py (+1/-1) src/maasserver/websockets/handlers/subnet.py (+23/-2) src/maasserver/websockets/handlers/tests/test_config.py (+1/-1) src/maasserver/websockets/handlers/tests/test_controller.py (+6/-0) src/maasserver/websockets/handlers/tests/test_device.py (+0/-6) src/maasserver/websockets/handlers/tests/test_dhcpsnippet.py (+1/-1) src/maasserver/websockets/handlers/tests/test_discovery.py (+0/-5) src/maasserver/websockets/handlers/tests/test_domain.py (+9/-4) src/maasserver/websockets/handlers/tests/test_general.py (+11/-8) src/maasserver/websockets/handlers/tests/test_machine.py (+58/-31) src/maasserver/websockets/handlers/tests/test_notification.py (+252/-0) src/maasserver/websockets/handlers/tests/test_packagerepository.py (+1/-1) src/maasserver/websockets/handlers/tests/test_space.py (+4/-4) src/maasserver/websockets/handlers/tests/test_subnet.py (+111/-8) src/maasserver/websockets/handlers/tests/test_vlan.py (+19/-3) src/maasserver/websockets/handlers/vlan.py (+16/-9) src/maasserver/websockets/tests/test_protocol.py (+11/-6) src/maastesting/djangotestcase.py (+14/-2) src/maastesting/fixtures.py (+24/-13) src/maastesting/karma.conf.js (+1/-0) src/maastesting/matchers.py (+54/-0) src/maastesting/noseplug.py (+208/-16) src/maastesting/parallel.py (+399/-0) src/maastesting/testcase.py (+44/-24) src/maastesting/tests/test_conflict_markers.py (+20/-17) src/maastesting/tests/test_factory.py (+13/-10) src/maastesting/tests/test_fixtures.py (+12/-15) src/maastesting/tests/test_matchers.py (+89/-0) src/maastesting/tests/test_noseplug.py (+132/-2) src/maastesting/tests/test_parallel.py (+242/-0) src/maastesting/tests/test_testcase.py (+28/-0) src/maastesting/twisted.py (+19/-0) src/maastesting/typecheck.py (+21/-0) src/maastesting/utils.py (+2/-109) src/metadataserver/address.py (+1/-1) src/metadataserver/api.py (+423/-128) src/metadataserver/builtin_scripts/__init__.py (+126/-0) src/metadataserver/builtin_scripts/smartctl.py (+215/-0) src/metadataserver/builtin_scripts/tests/test_builtin_scripts.py (+103/-0) src/metadataserver/builtin_scripts/tests/test_smartctl.py (+262/-0) src/metadataserver/enum.py (+38/-1) src/metadataserver/fixtures/initial_data.yaml (+0/-13) src/metadataserver/migrations/builtin/0002_script_models.py (+83/-0) src/metadataserver/migrations/builtin/0003_remove_noderesult.py (+83/-0) src/metadataserver/migrations/builtin/0004_aborted_script_status.py (+22/-0) src/metadataserver/migrations/builtin/0005_store_powerstate_on_scriptset_creation.py (+22/-0) src/metadataserver/models/__init__.py (+8/-8) src/metadataserver/models/commissioningscript.py (+7/-99) src/metadataserver/models/noderesult.py (+0/-126) src/metadataserver/models/script.py (+91/-0) src/metadataserver/models/scriptresult.py (+146/-0) src/metadataserver/models/scriptset.py (+195/-0) src/metadataserver/models/tests/test_commissioningscript.py (+1/-138) src/metadataserver/models/tests/test_nodecommissionresult.py (+0/-157) src/metadataserver/models/tests/test_script.py (+89/-0) src/metadataserver/models/tests/test_scriptresult.py (+231/-0) src/metadataserver/models/tests/test_scriptset.py (+264/-0) src/metadataserver/nodeinituser.py (+5/-12) src/metadataserver/tests/test_api.py (+909/-147) src/metadataserver/tests/test_api_status.py (+85/-35) src/metadataserver/tests/test_fields.py (+2/-2) src/metadataserver/tests/test_vendor_data.py (+0/-2) src/metadataserver/urls.py (+9/-3) src/metadataserver/user_data/__init__.py (+33/-9) src/metadataserver/user_data/commissioning.py (+0/-22) src/metadataserver/user_data/disk_erasing.py (+0/-25) src/metadataserver/user_data/poweroff.py (+0/-24) src/metadataserver/user_data/rescue_mode.py (+0/-24) src/metadataserver/user_data/snippets.py (+5/-6) src/metadataserver/user_data/templates/base_user_data.sh (+94/-0) src/metadataserver/user_data/templates/commissioning.template (+57/-196) src/metadataserver/user_data/templates/disk_erasing.template (+9/-101) src/metadataserver/user_data/templates/poweroff.template (+2/-2) src/metadataserver/user_data/templates/rescue_mode.template (+10/-101) src/metadataserver/user_data/templates/snippets/maas_ipmi_autodetect_tool.py (+8/-0) src/metadataserver/user_data/templates/snippets/maas_run_remote_scripts.py (+225/-0) src/metadataserver/user_data/templates/snippets/maas_signal.py (+29/-161) src/metadataserver/user_data/templates/snippets/maas_wedge_autodetect.sh (+154/-0) src/metadataserver/user_data/templates/snippets/tests/test_maas_run_remote_scripts.py (+177/-0) src/metadataserver/user_data/templates/testing.template (+26/-0) src/metadataserver/user_data/tests/test_commissioning.py (+0/-65) src/metadataserver/user_data/tests/test_disk_erasing.py (+0/-75) src/metadataserver/user_data/tests/test_generate_user_data.py (+183/-0) src/metadataserver/user_data/tests/test_poweroff.py (+0/-37) src/metadataserver/user_data/tests/test_rescue_mode.py (+0/-37) src/metadataserver/user_data/tests/test_snippets.py (+7/-6) src/provisioningserver/boot/__init__.py (+19/-13) src/provisioningserver/boot/pxe.py (+7/-1) src/provisioningserver/boot/tests/test_boot.py (+6/-0) src/provisioningserver/boot/uefi_amd64.py (+12/-2) src/provisioningserver/dhcp/__init__.py (+5/-5) src/provisioningserver/dhcp/tests/test_config.py (+31/-102) src/provisioningserver/diskless.py (+0/-237) src/provisioningserver/drivers/__init__.py (+78/-104) src/provisioningserver/drivers/diskless/__init__.py (+0/-102) src/provisioningserver/drivers/diskless/tests/test_base.py (+0/-163) src/provisioningserver/drivers/hardware/tests/test_virsh.py (+14/-0) src/provisioningserver/drivers/hardware/virsh.py (+3/-1) src/provisioningserver/drivers/osystem/tests/test_windows.py (+1/-1) src/provisioningserver/drivers/osystem/windows.py (+1/-0) src/provisioningserver/drivers/pod/__init__.py (+329/-0) src/provisioningserver/drivers/pod/registry.py (+36/-0) src/provisioningserver/drivers/pod/rsd.py (+806/-0) src/provisioningserver/drivers/pod/tests/test_base.py (+696/-0) src/provisioningserver/drivers/pod/tests/test_registry.py (+56/-0) src/provisioningserver/drivers/pod/tests/test_rsd.py (+1541/-0) src/provisioningserver/drivers/pod/tests/test_virsh.py (+1379/-0) src/provisioningserver/drivers/pod/virsh.py (+930/-0) src/provisioningserver/drivers/power/__init__.py (+116/-78) src/provisioningserver/drivers/power/amt.py (+11/-2) src/provisioningserver/drivers/power/apc.py (+17/-2) src/provisioningserver/drivers/power/dli.py (+17/-2) src/provisioningserver/drivers/power/fence_cdu.py (+18/-2) src/provisioningserver/drivers/power/hmc.py (+19/-2) src/provisioningserver/drivers/power/ipmi.py (+31/-2) src/provisioningserver/drivers/power/manual.py (+3/-1) src/provisioningserver/drivers/power/moonshot.py (+16/-2) src/provisioningserver/drivers/power/mscm.py (+19/-2) src/provisioningserver/drivers/power/msftocs.py (+17/-2) src/provisioningserver/drivers/power/nova.py (+21/-2) src/provisioningserver/drivers/power/registry.py (+74/-0) src/provisioningserver/drivers/power/seamicro.py (+27/-2) src/provisioningserver/drivers/power/tests/test_base.py (+76/-43) src/provisioningserver/drivers/power/tests/test_registry.py (+70/-0) src/provisioningserver/drivers/power/ucsm.py (+18/-2) src/provisioningserver/drivers/power/virsh.py (+18/-2) src/provisioningserver/drivers/power/vmware.py (+25/-2) src/provisioningserver/drivers/power/wedge.py (+13/-2) src/provisioningserver/drivers/tests/test_base.py (+152/-62) src/provisioningserver/events.py (+87/-6) src/provisioningserver/import_images/boot_resources.py (+52/-10) src/provisioningserver/import_images/keyrings.py (+2/-5) src/provisioningserver/import_images/tests/test_boot_resources.py (+56/-18) src/provisioningserver/import_images/tests/test_keyrings.py (+3/-1) src/provisioningserver/plugin.py (+18/-0) src/provisioningserver/power/change.py (+0/-269) src/provisioningserver/power/poweraction.py (+0/-136) src/provisioningserver/power/query.py (+0/-206) src/provisioningserver/power/schema.py (+0/-476) src/provisioningserver/power/tests/test_change.py (+0/-563) src/provisioningserver/power/tests/test_query.py (+0/-557) src/provisioningserver/rackdservices/node_power_monitor_service.py (+1/-1) src/provisioningserver/rackdservices/tests/test_tftp.py (+3/-3) src/provisioningserver/rackdservices/tftp.py (+2/-2) src/provisioningserver/rackdservices/tftp_offload.py (+207/-0) src/provisioningserver/refresh/__init__.py (+29/-55) src/provisioningserver/refresh/maas_api_helper.py (+104/-2) src/provisioningserver/refresh/node_info_scripts.py (+19/-13) src/provisioningserver/refresh/tests/test_maas_api_helper.py (+320/-14) src/provisioningserver/refresh/tests/test_node_info_scripts.py (+2/-2) src/provisioningserver/refresh/tests/test_refresh.py (+58/-121) src/provisioningserver/rpc/arguments.py (+68/-0) src/provisioningserver/rpc/cluster.py (+87/-1) src/provisioningserver/rpc/clusterservice.py (+42/-9) src/provisioningserver/rpc/exceptions.py (+13/-0) src/provisioningserver/rpc/pods.py (+174/-0) src/provisioningserver/rpc/power.py (+432/-31) src/provisioningserver/rpc/tests/test_arguments.py (+107/-0) src/provisioningserver/rpc/tests/test_clusterservice.py (+165/-20) src/provisioningserver/rpc/tests/test_pods.py (+415/-0) src/provisioningserver/rpc/tests/test_power.py (+1109/-145) src/provisioningserver/templates/commissioning-user-data/snippets/maas_api_helper.py (+0/-110) src/provisioningserver/templates/commissioning-user-data/snippets/maas_get.py (+0/-47) src/provisioningserver/templates/dns/zone.template (+1/-1) src/provisioningserver/testing/network.py (+0/-40) src/provisioningserver/tests/test_config.py (+4/-2) src/provisioningserver/tests/test_diskless.py (+0/-493) src/provisioningserver/tests/test_events.py (+22/-7) src/provisioningserver/tests/test_plugin.py (+21/-1) src/provisioningserver/tests/test_service_monitor.py (+1/-1) src/provisioningserver/utils/fs.py (+10/-7) src/provisioningserver/utils/network.py (+4/-3) src/provisioningserver/utils/service_monitor.py (+5/-2) src/provisioningserver/utils/tests/test_enum.py (+3/-3) src/provisioningserver/utils/tests/test_env.py (+1/-0) src/provisioningserver/utils/tests/test_fs.py (+15/-10) src/provisioningserver/utils/tests/test_network.py (+8/-5) src/provisioningserver/utils/tests/test_service_monitor.py (+18/-1) src/provisioningserver/utils/tests/test_utils.py (+8/-12) utilities/check-imports (+71/-55) utilities/regiond-storm (+127/-0) utilities/remote-reinstall (+0/-4) versions.cfg (+29/-22) Text conflict in MANIFEST.in Text conflict in docs/changelog.rst Contents conflict in docs/troubleshooting.rst Text conflict in src/maasserver/api/spaces.py Text conflict in src/maasserver/api/subnets.py Text conflict in src/maasserver/compose_preseed.py Text conflict in src/maasserver/forms/tests/test_interface_link.py Contents conflict in src/maasserver/migrations/south/django16_south_maas19.tar.gz Text conflict in src/maasserver/models/staticipaddress.py Text conflict in src/maasserver/models/tests/test_staticipaddress.py Contents conflict in src/maasserver/static/assets/images/icons/account.svg Contents conflict in src/maasserver/static/assets/images/icons/add-logical-volume.svg Contents conflict in src/maasserver/static/assets/images/icons/add-partition.svg Contents conflict in src/maasserver/static/assets/images/icons/add.svg Contents conflict in src/maasserver/static/assets/images/icons/cross-orange.svg Contents conflict in src/maasserver/static/assets/images/icons/cross.svg Contents conflict in src/maasserver/static/assets/images/icons/cross_orange.svg Contents conflict in src/maasserver/static/assets/images/icons/debug.svg Contents conflict in src/maasserver/static/assets/images/icons/delete.svg Contents conflict in src/maasserver/static/assets/images/icons/edit.svg Contents conflict in src/maasserver/static/assets/images/icons/green-tick.svg Contents conflict in src/maasserver/static/assets/images/icons/help.svg Contents conflict in src/maasserver/static/assets/images/icons/info-mono.svg Contents conflict in src/maasserver/static/assets/images/icons/info.svg Contents conflict in src/maasserver/static/assets/images/icons/logical-volume.svg Contents conflict in src/maasserver/static/assets/images/icons/magnifying_glass.svg Contents conflict in src/maasserver/static/assets/images/icons/mount.svg Contents conflict in src/maasserver/static/assets/images/icons/partition.svg Contents conflict in src/maasserver/static/assets/images/icons/power-error.svg Contents conflict in src/maasserver/static/assets/images/icons/power-off.svg Contents conflict in src/maasserver/static/assets/images/icons/power-on.svg Contents conflict in src/maasserver/static/assets/images/icons/remove.svg Contents conflict in src/maasserver/static/assets/images/icons/settings.svg Contents conflict in src/maasserver/static/assets/images/icons/success-mono.svg Contents conflict in src/maasserver/static/assets/images/icons/success.svg Contents conflict in src/maasserver/static/assets/images/icons/success_colour_black.svg Contents conflict in src/maasserver/static/assets/images/icons/success_colour_white.svg Contents conflict in src/maasserver/static/assets/images/icons/success_mono.svg Contents conflict in src/maasserver/static/assets/images/icons/sync.svg Contents conflict in src/maasserver/static/assets/images/icons/system-shutdown.svg Contents conflict in src/maasserver/static/assets/images/icons/tags.svg Contents conflict in src/maasserver/static/assets/images/icons/tick.svg Contents conflict in src/maasserver/static/assets/images/icons/tooltip.svg Contents conflict in src/maasserver/static/assets/images/icons/unmount.svg Contents conflict in src/maasserver/static/assets/images/icons/warning-mono.svg Contents conflict in src/maasserver/static/assets/images/icons/warning.svg Contents conflict in src/maasserver/static/assets/images/icons/warning_colour_black.svg Contents conflict in src/maasserver/static/assets/images/icons/warning_colour_white.svg Contents conflict in src/maasserver/static/assets/images/icons/warning_mono.svg Conflict adding file src/maasserver/static/css/build.css. Moved existing file to src/maasserver/static/css/build.css.moved. Text conflict in src/maasserver/static/js/angular/maas.js Text conflict in src/maasserver/static/partials/dashboard.html Text conflict in src/maasserver/static/partials/domain-details.html Text conflict in src/maasserver/static/partials/domains-list.html Text conflict in src/maasserver/static/partials/error.html Text conflict in src/maasserver/static/partials/fabric-details.html Text conflict in src/maasserver/static/partials/intro-user.html Text conflict in src/maasserver/static/partials/intro.html Text conflict in src/maasserver/static/partials/networks-list.html Text conflict in src/maasserver/static/partials/node-details.html Text conflict in src/maasserver/static/partials/node-events.html Text conflict in src/maasserver/static/partials/node-result.html Text conflict in src/maasserver/static/partials/nodes-list.html Text conflict in src/maasserver/static/partials/settings.html Text conflict in src/maasserver/static/partials/space-details.html Text conflict in src/maasserver/static/partials/ssh-keys.html Text conflict in src/maasserver/static/partials/subnet-details.html Text conflict in src/maasserver/static/partials/vlan-details.html Contents conflict in src/maasserver/static/scss/_base.forms.scss Contents conflict in src/maasserver/static/scss/_components.buttons.scss Contents conflict in src/maasserver/static/scss/_components.flashmessages.scss Contents conflict in src/maasserver/static/scss/_components.forms.scss Contents conflict in src/maasserver/static/scss/_components.icons.scss Contents conflict in src/maasserver/static/scss/_components.tables.scss Contents conflict in src/maasserver/static/scss/_helpers.display.scss Contents conflict in src/maasserver/static/scss/_helpers.spacing.scss Contents conflict in src/maasserver/static/scss/_patterns.page-header.scss Text conflict in src/maasserver/templates/maasserver/base.html Text conflict in src/maasserver/tests/test_compose_preseed.py Text conflict in src/metadataserver/api.py Text conflict in src/provisioningserver/boot/uefi_amd64.py Text conflict in src/provisioningserver/import_images/boot_resources.py Text conflict in src/provisioningserver/import_images/tests/test_boot_resources.py Text conflict in versions.cfg |
To merge this branch: | bzr merge lp:~andreserl/maas/lp1665143 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
MAAS Maintainers | Pending | ||
Review via email: mp+318489@code.launchpad.net |
This proposal supersedes a proposal from 2017-02-27.
This proposal has been superseded by a proposal from 2017-02-28.
Unmerged revisions
- 5758. By Andres Rodriguez
-
Make updates
- 5757. By Andres Rodriguez
-
Make updates
- 5756. By Andres Rodriguez
-
Work around issue when discovering nvme
- 5755. By Andres Rodriguez
-
[r=andreserl,
mpontillo] [bug=][ author= andreserl] Ensure that we can discover a wedge BMC even if we detect a connected 'ipmi' device - 5754. By Gavin Panella
-
[r=blake-
rouse][ bug=][author= allenap] Concurrent calls to getClientNow will not cause an update storm. - 5753. By Newell Jensen
-
[r=lamont][bug=1665839][author=
newell- jensen] Sieve the newly composed machine based off of node_id. - 5752. By Gavin Panella
-
[r=allenap]
[bug=][ author= allenap] Add to the list of development packages needed for Yakkety and Zesty. - 5751. By Gavin Panella
-
[r=andreserl]
[bug=][ author= allenap] Use the new styling for notifications in the UI and group by category. - 5750. By Blake Rouse
-
[r=newell-jensen][bug=1664732][author=
blake-rouse] Fix pod deletion to only decompose machines that MAAS has composed. Convert pod deletion into an async operation. MAAS know records the creation type of a machine. This type allows MAAS to know what to do upon deletion of that machine. If the machine existed in the pod or was added to the pod out of band from MAAS then it will not be decomposed when the machine or pod is deleted. If the machine was created by MAAS then it will be decomposed in the pod when the machine or pod is deleted. The pod delete operation is not an asynchronous operation where it tries its best to decompose all machines. If decomposing fails then the deletion process will be stopped and the reason for the failure will be raised. If all the machines that required decomposition are successfully decomposed then it will also delete the pre-existing machines and the pod.
- 5749. By Lee Trager
-
[r=brendan-
donegan, mpontillo] [bug=][ author= ltrager] Fix smartctl test when running on hardware RAID and unsupported hardware. The smartctl --scan command lists all drives on the system along with the
device type and any options needed to run smartctl against the drive. While the extra options aren't needed for a typical SCSI drive, they are needed when running smartctl on certain hardware RAID systems to indicate which drive is to be tested.smartctl --scan also lists all drives it can find, it does not filter out
drives which do not support SMART. The script now verifies all drives support SMART before scanning.