Merge lp:~andreserl/maas/lp1665143 into lp:maas/2.1

Proposed by Andres Rodriguez
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
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.

To post a comment you must log in.

Unmerged revisions

5758. By Andres Rodriguez on 2017-02-27

Make updates

5757. By Andres Rodriguez on 2017-02-27

Make updates

5756. By Andres Rodriguez on 2017-02-22

Work around issue when discovering nvme

5755. By Andres Rodriguez on 2017-02-22

[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 on 2017-02-22

[r=blake-rouse][bug=][author=allenap] Concurrent calls to getClientNow will not cause an update storm.

5753. By Newell Jensen on 2017-02-22

[r=lamont][bug=1665839][author=newell-jensen] Sieve the newly composed machine based off of node_id.

5752. By Gavin Panella on 2017-02-21

[r=allenap][bug=][author=allenap] Add to the list of development packages needed for Yakkety and Zesty.

5751. By Gavin Panella on 2017-02-20

[r=andreserl][bug=][author=allenap] Use the new styling for notifications in the UI and group by category.

5750. By Blake Rouse on 2017-02-18

[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 on 2017-02-17

[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.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2016-09-07 15:04:32 +0000
3+++ .bzrignore 2017-02-28 15:11:34 +0000
4@@ -2,8 +2,10 @@
5 *.egg
6 *.egg-info
7 *.log
8+./.bzr
9 ./.db.lock
10 ./.failed
11+./.git
12 ./.hypothesis
13 ./.idea
14 ./.idea/libraries
15@@ -11,6 +13,8 @@
16 ./.idea/workspace.xml
17 ./.installed.cfg
18 ./.noseids
19+./.run
20+./.run-e2e
21 ./bin
22 ./build
23 ./coverage
24@@ -33,16 +37,10 @@
25 ./media/demo/*
26 ./media/development
27 ./parts
28-./run-e2e/*
29-./run-e2e/etc/*
30-./run-e2e/etc/maas/*
31-./run/*
32-./run/etc/*
33-./run/etc/maas/*
34-./run/etc/ntp/*
35 ./services/*/supervise
36 ./src/maasserver/static/js/enums.js
37 ./TAGS
38 ./tags
39 ./xunit.*.xml
40 dropin.cache
41+__pycache__
42
43=== modified file '.gitignore'
44--- .gitignore 2016-09-07 15:04:32 +0000
45+++ .gitignore 2017-02-28 15:11:34 +0000
46@@ -2,8 +2,10 @@
47 *.egg
48 *.egg-info
49 *.log
50+/.bzr
51 /.db.lock
52 /.failed
53+/.git
54 /.hypothesis
55 /.idea
56 /.idea/libraries
57@@ -11,6 +13,8 @@
58 /.idea/workspace.xml
59 /.installed.cfg
60 /.noseids
61+/.run
62+/.run-e2e
63 /bin
64 /build
65 /coverage
66@@ -33,18 +37,10 @@
67 /media/demo/*
68 /media/development
69 /parts
70-/run-e2e/*
71-/run-e2e/etc/*
72-/run-e2e/etc/maas/*
73-/run/*
74-/run/etc/*
75-/run/etc/maas/*
76-/run/etc/ntp/*
77 /services/*/supervise
78 /src/maasserver/static/js/enums.js
79 /TAGS
80 /tags
81 /xunit.*.xml
82 dropin.cache
83-/src/**/*.pyc
84-/etc/**/*.pyc
85+__pycache__
86
87=== modified file 'HACKING.txt'
88--- HACKING.txt 2016-03-28 13:54:47 +0000
89+++ HACKING.txt 2017-02-28 15:11:34 +0000
90@@ -108,6 +108,19 @@
91 changing your locales on your workstation to ones present on the
92 server will solve the issue.
93
94+
95+Emitting subunit
96+^^^^^^^^^^^^^^^^
97+
98+Pass the ``--with-subunit`` flag to any of the test runners (e.g.
99+``bin/test.rack``) to produce a `subunit`_ stream of test results. This
100+may be useful for parallelising test runs, or to allow later analysis of
101+a test run. The optional ``--subunit-fd`` flag can be used to direct the
102+results to a different file descriptor, to ensure a clean stream.
103+
104+.. _subunit: https://launchpad.net/subunit/
105+
106+
107 Running JavaScript tests
108 ^^^^^^^^^^^^^^^^^^^^^^^^
109
110@@ -138,8 +151,9 @@
111 regiond.log. To enable logging of all exceptions even exceptions where MAAS
112 will return the correct HTTP status code.::
113
114- $ sudo sed -i 's/DEBUG = False/DEBUG = True/g' /usr/share/maas/maas/settings.py
115- $ sudo service maas-regiond restart
116+ $ sudo sed -i 's/DEBUG = False/DEBUG = True/g' \
117+ > /usr/lib/python3/dist-packages/maasserver/djangosettings/settings.py
118+ $ sudo service maas-regiond restart
119
120 Run regiond in foreground
121 ^^^^^^^^^^^^^^^^^^^^^^^^^
122@@ -149,8 +163,10 @@
123 placed a breakpoint into the code you want to inspect you can start the regiond
124 process in the foreground.::
125
126- $ sudo service maas-regiond stop
127- $ sudo -u maas -H DJANGO_SETTINGS_MODULE=maas.settings PYTHONPATH=/usr/share/maas twistd3 --nodaemon --pidfile= maas-regiond
128+ $ sudo service maas-regiond stop
129+ $ sudo -u maas -H \
130+ > DJANGO_SETTINGS_MODULE=maasserver.djangosettings.settings \
131+ > twistd3 --nodaemon --pidfile= maas-regiond
132
133
134 .. Note::
135@@ -175,7 +191,8 @@
136 Development MAAS server setup
137 =============================
138
139-Access to the database is configured in ``src/maas/development.py``.
140+Access to the database is configured in
141+``src/maasserver/djangosettings/development.py``.
142
143 The ``Makefile`` or the test suite sets up a development database
144 cluster inside your branch. It lives in the ``db`` directory, which
145
146=== modified file 'MANIFEST.in'
147--- MANIFEST.in 2016-12-07 12:59:10 +0000
148+++ MANIFEST.in 2017-02-28 15:11:34 +0000
149@@ -1,6 +1,19 @@
150-graft src/maasserver/static
151-graft src/maasserver/templates
152-graft src/metadataserver/fixtures
153-graft src/provisioningserver/templates
154+<<<<<<< TREE
155+graft src/maasserver/static
156+graft src/maasserver/templates
157+graft src/metadataserver/fixtures
158+graft src/provisioningserver/templates
159+=======
160+graft src/maasserver/static
161+graft src/maasserver/templates
162+graft src/metadataserver/fixtures
163+graft src/metadataserver/user_data/templates
164+graft src/provisioningserver/templates
165+>>>>>>> MERGE-SOURCE
166 include src/maasserver/migrations/south/django16_south_maas19.tar.gz
167-include src/provisioningserver/drivers/power/*.xml
168+<<<<<<< TREE
169+include src/provisioningserver/drivers/power/*.xml
170+=======
171+include src/provisioningserver/drivers/power/*.xml
172+include src/metadataserver/builtin_scripts/*.template
173+>>>>>>> MERGE-SOURCE
174
175=== modified file 'Makefile'
176--- Makefile 2016-10-17 06:38:56 +0000
177+++ Makefile 2017-02-28 15:11:34 +0000
178@@ -28,11 +28,9 @@
179
180 # MAAS SASS stylesheets. The first input file (maas-styles.css) imports
181 # the others, so is treated specially in the target definitions.
182-scss_theme := include/nodejs/node_modules/cloud-vanilla-theme
183-scss_inputs := \
184- src/maasserver/static/scss/build.scss \
185- $(wildcard src/maasserver/static/scss/*/*.scss) \
186- $(wildcard src/maasserver/static/scss/*/*/*.scss)
187+scss_theme := include/nodejs/node_modules/maas-gui-vanilla-theme
188+scss_input := src/maasserver/static/scss/build.scss
189+scss_deps := $(wildcard src/maasserver/static/scss/_*.scss)
190 scss_output := src/maasserver/static/css/build.css
191
192 # Prefix commands with this when they need access to the database.
193@@ -49,7 +47,7 @@
194 export PGDATABASE := maas
195
196 # For anything we start, we want to hint as to its root directory.
197-export MAAS_ROOT := $(CURDIR)/run
198+export MAAS_ROOT := $(CURDIR)/.run
199
200 build: \
201 bin/buildout \
202@@ -61,11 +59,12 @@
203 bin/twistd.region \
204 bin/test.cli \
205 bin/test.rack \
206- bin/test.config \
207 bin/test.region \
208+ bin/test.region.legacy \
209 bin/test.testing \
210 bin/test.js \
211 bin/test.e2e \
212+ bin/test.parallel \
213 bin/py bin/ipy \
214 $(js_enums)
215
216@@ -86,12 +85,6 @@
217
218 .gitignore: .bzrignore
219 sed 's:^[.]/:/:' $^ > $@
220- echo '/src/**/*.pyc' >> $@
221- echo '/etc/**/*.pyc' >> $@
222-
223-run/etc/ntp.conf: templates/ntp.conf
224- @mkdir -p $(@D)
225- @cp templates/ntp.conf $@
226
227 configure-buildout:
228 utilities/configure-buildout
229@@ -110,9 +103,14 @@
230 $(buildout) install database
231 @touch --no-create $@
232
233+bin/test.parallel: \
234+ bin/buildout buildout.cfg versions.cfg setup.py
235+ $(buildout) install parallel-test
236+ @touch --no-create $@
237+
238 bin/maas-region bin/twistd.region: \
239 bin/buildout buildout.cfg versions.cfg setup.py \
240- $(js_enums) $(scss_output)
241+ $(js_enums) $(scss_output) .run
242 $(buildout) install region
243 @touch --no-create $@
244
245@@ -122,6 +120,11 @@
246 $(buildout) install region-test
247 @touch --no-create $@
248
249+bin/test.region.legacy: \
250+ bin/buildout buildout.cfg versions.cfg setup.py $(js_enums)
251+ $(buildout) install region-test-legacy
252+ @touch --no-create $@
253+
254 bin/maas: bin/buildout buildout.cfg versions.cfg setup.py
255 $(buildout) install cli
256 @touch --no-create $@
257@@ -134,33 +137,29 @@
258 $(buildout) install js-test
259 @touch --no-create $@
260
261-bin/test.e2e: bin/protractor bin/buildout buildout.cfg versions.cfg setup.py
262+bin/test.e2e: \
263+ bin/protractor bin/buildout buildout.cfg versions.cfg setup.py .run-e2e
264 $(buildout) install e2e-test
265 @touch --no-create $@
266
267 # bin/maas-region is needed for South migration tests. bin/flake8 is
268 # needed for checking lint and bin/sass is needed for checking css.
269 bin/test.testing: \
270- bin/maas-region bin/flake8 bin/sass bin/buildout \
271+ bin/maas-region bin/flake8 bin/sass $(scss_theme) bin/buildout \
272 buildout.cfg versions.cfg setup.py
273 $(buildout) install testing-test
274 @touch --no-create $@
275
276 bin/maas-rack bin/twistd.rack: \
277- bin/buildout buildout.cfg versions.cfg setup.py
278+ bin/buildout buildout.cfg versions.cfg setup.py .run
279 $(buildout) install rack
280 @touch --no-create $@
281
282 bin/test.rack: \
283- bin/buildout buildout.cfg versions.cfg setup.py bin/maas-rack \
284- run/etc/ntp.conf
285+ bin/buildout buildout.cfg versions.cfg setup.py bin/maas-rack
286 $(buildout) install rack-test
287 @touch --no-create $@
288
289-bin/test.config: bin/buildout buildout.cfg versions.cfg setup.py
290- $(buildout) install config-test
291- @touch --no-create $@
292-
293 bin/flake8: bin/buildout buildout.cfg versions.cfg setup.py
294 $(buildout) install flake8
295 @touch --no-create $@
296@@ -211,8 +210,8 @@
297 define test-scripts
298 bin/test.cli
299 bin/test.rack
300- bin/test.config
301 bin/test.region
302+ bin/test.region.legacy
303 bin/test.testing
304 bin/test.js
305 endef
306@@ -224,7 +223,10 @@
307 test+lxd: lxd $(strip $(test-scripts))
308 utilities/isolated-make-test
309
310-test: $(strip $(test-scripts))
311+test: bin/test.parallel
312+ @bin/test.parallel --subprocess-per-core
313+
314+test-serial: $(strip $(test-scripts))
315 @bin/maas-region makemigrations --dry-run --exit && exit 1 ||:
316 @$(RM) coverage.data .failed
317 $(foreach test,$^,$(test-template);)
318@@ -239,6 +241,13 @@
319 clean-failed:
320 $(RM) .noseids
321
322+src/maasserver/testing/initial.maas_test.sql: bin/database syncdb
323+ bin/database --preserve run -- \
324+ pg_dump maas --no-owner --no-privileges \
325+ --format=plain > $@
326+
327+test-initial-data: src/maasserver/testing/initial.maas_test.sql
328+
329 define test-template
330 $(test) --with-xunit --xunit-file=xunit.$(notdir $(test)).xml || touch .failed
331 endef
332@@ -253,8 +262,8 @@
333 @bin/maas-region makemigrations --dry-run --exit && exit 1 ||:
334 @bin/test.rack --stop
335
336-test+coverage: export NOSE_WITH_COVERAGE = 1
337-test+coverage: test
338+test-serial+coverage: export NOSE_WITH_COVERAGE = 1
339+test-serial+coverage: test-serial
340
341 coverage-report: coverage/index.html
342 sensible-browser $< > /dev/null 2>&1 &
343@@ -270,10 +279,12 @@
344 --title "MAAS r$(revno)" --directory $(@D)
345
346 coverage.data:
347- @$(error Use `$(MAKE) test+coverage` to generate coverage data, \
348- or invoke a test script using the `--with-coverage` flag)
349+ @$(error Use `$(MAKE) test-serial+coverage` to generate coverage \
350+ data, or invoke a test script using the `--with-coverage` flag)
351
352-lint: lint-py lint-py-complexity lint-py-imports lint-js lint-doc lint-rst
353+lint: \
354+ lint-py lint-py-complexity lint-py-imports \
355+ lint-js lint-junk lint-doc lint-rst
356
357 pocketlint = $(call available,pocketlint,python-pocket-lint)
358
359@@ -289,7 +300,7 @@
360 lint-py: bin/flake8
361 @find $(sources) -name '*.py' \
362 ! -path '*/migrations/*' ! -path '*/south_migrations/*' -print0 \
363- | xargs -r0 bin/flake8 --ignore=E123,E402,E731 --isolated
364+ | xargs -r0 bin/flake8 --ignore=E123,E305,E402,E731 --isolated
365
366 # Ignore tests when checking complexity. The maximum complexity ought to
367 # be close to 10 but MAAS has many functions that are over that so we
368@@ -300,7 +311,7 @@
369 @find $(sources) -name '*.py' \
370 ! -path '*/migrations/*' ! -path '*/south_migrations/*' \
371 ! -path '*/tests/*' ! -path '*/testing/*' ! -name 'testing.py' \
372- -print0 | xargs -r0 bin/flake8 --ignore=E123,E402,E731 \
373+ -print0 | xargs -r0 bin/flake8 --ignore=E123,E305,E402,E731 \
374 --isolated --max-complexity=$(maximum)
375
376 # Statically check imports against policy.
377@@ -323,6 +334,11 @@
378 '(' -name '*.html' -o -name '*.js' ')' -print0 \
379 | xargs -r0 -n20 -P4 $(pocketlint)
380
381+# Sometimes junk gets added to MAAS, like .moved files.
382+lint-junk:
383+ @if bzr ls --recursive --versioned | egrep '[.]moved$$'; then \
384+ echo "^ Junk found. Please remove it from the tree." >&2 ; fi
385+
386 # Apply automated formatting to all Python files.
387 format: sources = $(wildcard *.py contrib/*.py) src templates twisted utilities etc
388 format:
389@@ -360,6 +376,9 @@
390 man/%: docs/man/%.rst | bin/sphinx-build
391 bin/sphinx-build -b man docs man $^
392
393+.run .run-e2e: run-skel
394+ cp -av $^ $@
395+
396 enums: $(js_enums)
397
398 $(js_enums): bin/py src/maasserver/utils/jsenums.py $(py_enums)
399@@ -367,23 +386,23 @@
400
401 styles: clean-styles $(scss_output)
402
403-$(scss_output): bin/sass $(scss_theme) $(scss_inputs)
404+$(scss_output): bin/sass $(scss_theme) $(scss_input) $(scss_deps)
405 bin/sass --include-path=src/maasserver/static/scss \
406- --output-style compressed $(scss_inputs) -o $(dir $@)
407+ --output-style compressed $(scss_input) -o $(dir $@)
408
409 $(scss_theme): prefix = include/nodejs
410 $(scss_theme):
411- $(npm_install) --prefix $(prefix) cloud-vanilla-theme@0.0.22
412+ $(npm_install) --prefix $(prefix) maas-gui-vanilla-theme@1.2.0
413
414 clean-styles:
415 $(RM) $(scss_output)
416
417-clean: stop clean-run clean-failed
418+clean: stop clean-failed
419 find . -type f -name '*.py[co]' -print0 | xargs -r0 $(RM)
420 find . -type d -name '__pycache__' -print0 | xargs -r0 $(RM) -r
421 find . -type f -name '*~' -print0 | xargs -r0 $(RM)
422 find . -type f -name dropin.cache -print0 | xargs -r0 $(RM)
423- $(RM) -r media/demo/* media/development
424+ $(RM) -r media/demo/* media/development media/development.*
425 $(RM) $(js_enums) $(js_enums).tmp
426 $(RM) src/maasserver/data/templates.py
427 $(RM) *.log
428@@ -399,25 +418,10 @@
429 $(RM) tags TAGS .installed.cfg
430 $(RM) -r *.egg *.egg-info src/*.egg-info
431 $(RM) -r services/*/supervise
432+ $(RM) -r .run .run-e2e
433 $(RM) xunit.*.xml
434 $(RM) .failed
435
436-# Be selective about what to remove from run and run-e2e.
437-define clean-run-template
438-find $(1) -depth ! -type d \
439- ! -path $(1)/etc/maas/templates \
440- ! -path $(1)/etc/maas/drivers.yaml \
441- ! -path $(1)/etc/ntp/.keep \
442- ! -path $(1)/etc/ntp.conf \
443- -print0 | xargs -r0 $(RM)
444-find $(1) -depth -type d \
445- -print0 | xargs -r0 rmdir --ignore-fail-on-non-empty
446-endef
447-
448-clean-run:
449- $(call clean-run-template,run)
450- $(call clean-run-template,run-e2e)
451-
452 clean+db: clean
453 while fuser db --kill -TERM; do sleep 1; done
454 $(RM) -r db
455@@ -427,7 +431,8 @@
456 $(warning 'distclean' is deprecated; use 'clean')
457
458 harness: bin/maas-region bin/database
459- $(dbrun) bin/maas-region shell --settings=maas.demo
460+ $(dbrun) bin/maas-region shell \
461+ --settings=maasserver.djangosettings.demo
462
463 dbharness: bin/database
464 bin/database --preserve shell
465@@ -441,7 +446,6 @@
466 clean
467 clean+db
468 clean-failed
469- clean-run
470 clean-styles
471 configure-buildout
472 copyright
473@@ -458,6 +462,7 @@
474 lint-css
475 lint-doc
476 lint-js
477+ lint-junk
478 lint-py
479 lint-py-complexity
480 lint-py-imports
481@@ -471,10 +476,11 @@
482 sudoers
483 syncdb
484 test
485- test+coverage
486 test+lxd
487 test-failed
488- test-migrations
489+ test-initial-data
490+ test-serial
491+ test-serial+coverage
492 endef
493
494 #
495@@ -568,13 +574,13 @@
496
497 services/database/@deps: bin/database
498
499-services/rackd/@deps: bin/twistd.rack
500+services/rackd/@deps: bin/twistd.rack bin/maas-rack
501
502 services/reloader/@deps:
503
504-services/regiond/@deps: bin/maas-region
505+services/regiond/@deps: bin/maas-region bin/maas-rack
506
507-services/regiond2/@deps: bin/maas-region
508+services/regiond2/@deps: bin/maas-region bin/maas-rack
509
510 #
511 # Package building
512@@ -692,6 +698,28 @@
513 .PHONY: $(phony) FORCE
514
515 #
516+# Secondary stuff.
517+#
518+# These are intermediate files that we want to keep around in the event
519+# that they get built. By declaring them here we're also telling Make
520+# that their absense is okay if a rule target is newer than the rule's
521+# other prerequisites; i.e. don't build them.
522+#
523+# For example, converting foo.scss to foo.css might require bin/sass. If
524+# foo.css is newer than foo.scss we know that we don't need to perform
525+# that conversion, and hence don't need bin/sass. We declare bin/sass as
526+# secondary so that Make knows this too.
527+#
528+
529+define secondary
530+ bin/py bin/buildout
531+ bin/sass $(scss_theme)
532+ bin/sphinx bin/sphinx-build
533+endef
534+
535+.SECONDARY: $(sort $(strip $(secondary)))
536+
537+#
538 # Functions.
539 #
540
541
542=== modified file 'buildout.cfg'
543--- buildout.cfg 2016-10-12 15:26:17 +0000
544+++ buildout.cfg 2017-02-28 15:11:34 +0000
545@@ -5,10 +5,12 @@
546 config-test
547 coverage
548 flake8
549+ parallel-test
550 rack
551 rack-test
552 region
553 region-test
554+ region-test-legacy
555 repl
556 sphinx
557 testing-test
558@@ -36,8 +38,8 @@
559 fixtures
560 hypothesis
561 ipdb
562+ junitxml
563 nose
564- nose-progressive
565 nose-timer
566 postgresfixture
567 python-subunit
568@@ -63,17 +65,15 @@
569 sys.path.sort(key=p_sys_prefix)
570 environment =
571 from os import environ
572- environ.setdefault("MAAS_ROOT", "${buildout:directory}/run")
573+ environ.setdefault("MAAS_ROOT", "${buildout:directory}/.run")
574 warnings =
575 from warnings import filterwarnings
576 filterwarnings("ignore", category=RuntimeWarning, module="pkg_resources")
577 inject-test-options =
578- # When running tests from a console use the progressive output plugin.
579- # When running headless increase the verbosity so we can see the test
580- # being run from a log file. An `options` list must be defined ahead
581- # of the use of this snippet.
582- # *** NOSE PROGRESSIVE IS BROKEN IN PYTHON 3.5 ***
583- # ["--verbosity=0", "--with-progressive"]
584+ # When running tests from a console show only dots, but when running
585+ # headless increase verbosity so we can see the test being run from a
586+ # log file. An `options` list must be defined ahead of the use of this
587+ # snippet.
588 options += (
589 ["--verbosity=1"]
590 if sys.stdout.isatty() else
591@@ -92,6 +92,16 @@
592 entry-points = database=postgresfixture.main:main
593 scripts = database
594
595+[parallel-test]
596+recipe = zc.recipe.egg
597+eggs =
598+ ${common:test-eggs}
599+entry-points =
600+ test.parallel=maastesting.parallel:main
601+scripts = test.parallel
602+extra-paths =
603+ ${common:extra-paths}
604+
605 [region]
606 recipe = zc.recipe.egg
607 test-eggs =
608@@ -104,7 +114,7 @@
609 twistd.region=twisted.scripts.twistd:run
610 initialization =
611 ${common:initialization}
612- environ.setdefault("DJANGO_SETTINGS_MODULE", "maas.development")
613+ environ.setdefault("DJANGO_SETTINGS_MODULE", "maasserver.djangosettings.development")
614 scripts =
615 maas-region
616 twistd.region
617@@ -115,8 +125,54 @@
618 recipe = zc.recipe.egg
619 eggs =
620 ${region:eggs}
621-entry-points =
622- test.region=maasserver:execute_from_command_line
623+ ${common:test-eggs}
624+entry-points =
625+ test.region=maastesting.noseplug:main
626+initialization =
627+ ${region:initialization}
628+ options = [
629+ "--with-crochet",
630+ "--with-resources",
631+ "--with-scenarios",
632+ "--with-select",
633+ "--select-dir=src/maasserver",
634+ "--select-dir=src/metadataserver",
635+ "--cover-package=maas,maasserver,metadataserver",
636+ "--cover-branches",
637+ # Reduce the logging level to INFO here as
638+ # DebuggingLoggerMiddleware logs the content of all the
639+ # requests at DEBUG level: we don't want this in the
640+ # tests as it's too verbose.
641+ "--logging-level=INFO",
642+ "--logging-clear-handlers",
643+ # Do not run tests tagged "legacy".
644+ "-a", "!legacy",
645+ ]
646+ ${common:inject-test-options}
647+ # Configure logging. TODO: Do this in a plugin.
648+ from provisioningserver import logger
649+ logger.configure(mode=logger.LoggingMode.COMMAND)
650+ # Limit concurrency in all thread-pools to ONE.
651+ from maasserver.utils import threads
652+ threads.install_default_pool(maxthreads=1)
653+ threads.install_database_unpool(maxthreads=1)
654+ # Disable all database connections in the reactor.
655+ from maasserver.utils import orm
656+ from twisted.internet import reactor
657+ assert not reactor.running, "The reactor has been started too early."
658+ reactor.callFromThread(orm.disable_all_database_connections)
659+ # Last and least, configure Django.
660+ import django; django.setup()
661+scripts = test.region
662+extra-paths =
663+ ${region:extra-paths}
664+
665+[region-test-legacy]
666+recipe = zc.recipe.egg
667+eggs =
668+ ${region:eggs}
669+entry-points =
670+ test.region.legacy=maasserver:execute_from_command_line
671 initialization =
672 ${region:initialization}
673 environ.setdefault("MAAS_PREVENT_MIGRATIONS", "1")
674@@ -124,12 +180,8 @@
675 "test",
676 "--noinput",
677 "--with-crochet",
678- # Disable resources in the region for now because of suspected bad
679- # interactions with django_nose.
680- # "--with-resources",
681 "--with-scenarios",
682 "--with-select",
683- "--select-dir=src/maas",
684 "--select-dir=src/maasserver",
685 "--select-dir=src/metadataserver",
686 "--cover-package=maas,maasserver,metadataserver",
687@@ -140,9 +192,11 @@
688 # tests as it's too verbose.
689 "--logging-level=INFO",
690 "--logging-clear-handlers",
691+ # Run only tests tagged "legacy".
692+ "-a", "legacy",
693 ]
694 ${common:inject-test-options}
695-scripts = test.region
696+scripts = test.region.legacy
697 extra-paths =
698 ${region:extra-paths}
699
700@@ -258,27 +312,6 @@
701 scripts =
702 test.rack
703
704-[config-test]
705-recipe = zc.recipe.egg
706-eggs =
707- ${common:test-eggs}
708-entry-points =
709- test.config=maastesting.noseplug:main
710-initialization =
711- ${common:initialization}
712- options = [
713- "--with-resources",
714- "--with-scenarios",
715- "--with-select",
716- "--select-dir=etc/maas/templates/commissioning-user-data",
717- "--cover-package=snippets",
718- "--cover-branches",
719- ]
720- ${common:inject-test-options}
721-extra-paths = ${common:extra-paths}
722-scripts =
723- test.config
724-
725 [e2e-test]
726 recipe = zc.recipe.egg
727 eggs =
728@@ -293,8 +326,8 @@
729 ${common:path-munge}
730 from os import environ
731 environ.setdefault("MAAS_RACK_DEVELOP", "TRUE")
732- environ.setdefault("MAAS_ROOT", "${buildout:directory}/run-e2e")
733- environ.setdefault("DJANGO_SETTINGS_MODULE", "maas.development")
734+ environ.setdefault("MAAS_ROOT", "${buildout:directory}/.run-e2e")
735+ environ.setdefault("DJANGO_SETTINGS_MODULE", "maasserver.djangosettings.development")
736 environ.setdefault("DEV_DB_NAME", "test_maas_e2e")
737 environ.setdefault("MAAS_PREVENT_MIGRATIONS", "1")
738
739
740=== modified file 'docs/_templates/maas/static/css/main.css'
741--- docs/_templates/maas/static/css/main.css 2014-06-09 16:25:19 +0000
742+++ docs/_templates/maas/static/css/main.css 2017-02-28 15:11:34 +0000
743@@ -73,3 +73,17 @@
744 text-decoration: none;
745 border-bottom: 1px solid #6D4100;
746 }
747+
748+/*
749+ * Custom CSS selectors for the API documentation page.
750+ *
751+ * Make subtitles for each API endpoint smaller, so they don't overwhelm
752+ * the remainder of the documentation.
753+ */
754+div#maas-api div#operations h4 code.docutils {
755+ font-size: 75%;
756+}
757+
758+div#maas-api div#operations div.section h5 {
759+ font-size: 90%;
760+}
761
762=== removed file 'docs/about.rst'
763--- docs/about.rst 2016-04-11 16:23:26 +0000
764+++ docs/about.rst 1970-01-01 00:00:00 +0000
765@@ -1,50 +0,0 @@
766-About this documentation
767-========================
768-
769-This is the documentation for Canonical's MAAS software. If you aren't
770-sure what that is, you should probably skip everything else and head
771-straight to the :ref:`orientation` section where it is explained.
772-Like any software though, it can be frustrating if you don't know how
773-bits of it work, how to achieve certain goals or what to do when
774-things go wrong. Amongst its various sections, this manual aims to
775-answer all those questions and plenty more you haven't even thought of
776-yet.
777-
778-
779-Getting it
780-----------
781-
782-In a cunning move, the current documentation always lives, and is
783-built from, the main MAAS source code (in the top-level ``docs/``
784-directory). That means that whatever MAAS package you have installed,
785-or even if you are really living life on the edge and have checked out
786-a development version from Launchpad, this documentation should be the
787-latest and most appropriate version for the software you are running.
788-However, it is also possible that there have been additional sections,
789-or more helpful and clearer bits added since the package you are using
790-was made. For this reason you can always find the latest documentation
791-online here: `http://maas.io/`_.
792-
793-.. _http://maas.io/:
794- http://maas.io
795-
796-
797-Contributing
798-------------
799-
800-If you have some extra information to add, or think you have spotted
801-an error or something out of date, we really want to hear about
802-it. Please `File a bug report`_ or `contact us directly`_. In addition
803-you can talk to us on the Freenode IRC channel #maas.
804-
805-.. _File a bug report:
806- https://bugs.launchpad.net/maas/+filebug
807-
808-.. _contact us directly:
809- https://launchpad.net/~maas-maintainers/+contactuser
810-
811-If you see something wrong with this documentation, you can help us fix it.
812-Download the source to MAAS by following the instructions in
813-:doc:`the hacking guide <hacking>`, make your changes, and propose a merge
814-against lp:maas on Launchpad. The documentation source lives in the top-level
815-``docs/`` directory.
816
817=== removed file 'docs/bootsources.rst'
818--- docs/bootsources.rst 2016-09-27 22:26:08 +0000
819+++ docs/bootsources.rst 1970-01-01 00:00:00 +0000
820@@ -1,113 +0,0 @@
821-.. -*- mode: rst -*-
822-
823-.. _bootsources:
824-
825-Boot images import configuration
826-================================
827-
828-The configuration for where a region downloads its images is defined by
829-a set of "sources". Each "source" defines a Simplestreams repository
830-location (``url``) from which images can be downloaded and a
831-``keyring_filename`` (or ``keyring_data``) for validating index and image
832-signatures from that location. For each source, you can define a series of
833-filters (``selections``) specifying which images should be downloaded from
834-that source.
835-
836-The following example use the MAAS CLI to list the boot sources and the boot
837-source selections. Assuming the CLI ``PROFILE`` is the name of the profile
838-under which you're logged in to the server::
839-
840- $ maas $PROFILE boot-sources read
841- [
842- {
843- "url": "http://images.maas.io/ephemeral-v3/daily/",
844- "keyring_data": "",
845- "resource_uri": "<url omitted for readability>",
846- "keyring_filename": "/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg",
847- "id": 1
848- }
849- ]
850-
851- $ maas $PROFILE boot-source-selections read 1
852- [
853- {
854- "labels": [
855- "release"
856- ],
857- "arches": [
858- "amd64"
859- ],
860- "subarches": [
861- "*"
862- ],
863- "release": "trusty",
864- "id": 1,
865- "resource_uri": "<url omitted for readability>"
866- }
867- ]
868-
869-
870-Restricting the images being downloaded
871----------------------------------------
872-
873-Let's say you want to add a previous LTS release to images being downloaded.
874-Starting from the configuration described above, you would need to:
875-
876-- Add the "Precise" selection (the selection '1' of the source '1')::
877-
878- $ maas $PROFILE boot-source-selections create 1 os="ubuntu" release="precise" arches="amd64" subarches="*" labels="*"
879-
880-After you've selected the additional boot sources you need to tell MAAS to
881-start the import process by running the command::
882-
883- $ maas $PROFILE boot-resources import
884-
885-Downloading the images from a different source
886-----------------------------------------------
887-
888-Let's say you want to import the images from a different location. You would
889-need to to change the source's url and keyring::
890-
891- $ maas $PROFILE boot-source update 1 url="http://custom.url" keyring_filename="" keyring_data@=./custom_keyring_file
892- {
893- "url": "http://custom.url/",
894- "keyring_data": "<base64 encoded content of `custom_keyring_file`>",
895- "resource_uri": "<url omitted for readability>",
896- "keyring_filename": "",
897- "id": 1
898- }
899-
900-Adding a source
901----------------
902-
903-You can also add a new source::
904-
905- $ maas $PROFILE boot-sources create url=http://my.url keyring_filename="" keyring_data@=./ custom_keyring_file
906- {
907- "url": "http://my.url/",
908- "keyring_data": "ZW1wdHkK",
909- "keyring_filename": "",
910- "id": 2,
911- "resource_uri": "<url omitted for readability>"
912- }
913-
914-Inside that newly created source ('2') you can add selections::
915-
916- $ maas $PROFILE boot-source-selections create 2 os="ubuntu" release="trusty" arches="amd64" subarches="*" labels='*'
917- {
918- "labels": ["*"],
919- "arches": ["amd64"],
920- "subarches": ["*"],
921- "release": "trusty",
922- "id": 3,
923- "resource_uri": "<url omitted for readability>"
924- }
925-
926-Deleting a source
927------------------
928-
929-Let's say you need to delete the newly added source.
930-
931-To delete the source::
932-
933- $ maas $PROFILE boot-source delete 2
934
935=== modified file 'docs/changelog.rst'
936--- docs/changelog.rst 2017-02-17 05:59:11 +0000
937+++ docs/changelog.rst 2017-02-28 15:11:34 +0000
938@@ -2,6 +2,7 @@
939 Changelog
940 =========
941
942+<<<<<<< TREE
943 2.1.4
944 =====
945
946@@ -170,881 +171,105 @@
947
948 2.1.0
949 =====
950+=======
951+2.2.0 (beta1)
952+=============
953+>>>>>>> MERGE-SOURCE
954
955 Important announcements
956 -----------------------
957
958-**New MAAS dashboard, now including discovered devices!**
959- In MAAS 2.1, administrators will be redirected to the new MAAS dashboard
960- after they log in to the Web UI. On the dashboard, administrators are guided
961- through where to go to quickly get MAAS up and running. In addition,
962- administrators can view hosts that have been discovered on the network, and
963- quickly convert them to a device in MAAS.
964-
965-**Image streams have been upgraded to v3. (Important: update your mirrors!)**
966- In order to support the new kernels, MAAS has moved to a new format for image
967- streams. Previous releases used stream in “v2” format. Starting from MAAS 2.1,
968- the “v3” format image stream will be used.
969-
970- Users upgrading from earlier versions of MAAS who are using the default images
971- URL will be automatically migrated to the new “v3” URL.
972-
973- For users with custom mirrors, MAAS will not migrate the image URL
974- automatically. Users must ensure their image mirrors contain the “v3” stream,
975- which is available at http://images.maas.io/ephemeral-v3/. Old images
976- downloaded from the “v2” stream will continue to work until the mirror is
977- updated, but the MAAS team only supports MAAS 2.1 users using the “v3” stream.
978- Please note that bootloaders are now included in the mirror; be sure to mirror
979- them in addition to the images.
980-
981-**New hardware enablement kernel naming convention**
982- Starting from MAAS 2.1 and Ubuntu 16.04 "Xenial", MAAS is adhering to a new
983- naming convention for hardware enablement kernels. On Xenial and above, MAAS
984- will not support HWE kernels with the old naming convention, but it will
985- support HWE kernel channel. For example, given Ubuntu 16.04 "Xenial" and
986- Yakkety, currently available kernels in MAAS are:
987-
988- * ga-<version>
989- The GA, or general availability kernel is the kernel which the Ubuntu
990- release shipped with. For example ‘ga-16.04’ is the default 4.4 kernel
991- which shipped on Ubuntu 16.04 "Xenial". The ga kernel contains all bug and
992- security fixes provided by the Ubuntu archives. Deployments which use the
993- ga kernel will stay at the same kernel version through upgrades until the
994- entire release is upgraded with ‘do-release-upgrade.’
995-
996- * hwe-<version>
997- The latest Hardware Enablement Kernel currently available in a given
998- Ubuntu release. As new Hardware Enable Kernels are released with new Ubuntu
999- releases the hwe-<version> kernel will be upgraded up until the next LTS.
1000- For example hwe-16.04 is currently the 16.04 GA kernel. Once 16.10 is
1001- released the hwe-16.04 kernel will be upgraded to the 16.10 GA kernel. The
1002- kernel will continue to be upgraded up until and including the 18.04 GA
1003- kernel.
1004-
1005-**Commissioning-user-data and pxe/uefi templates no longer available**
1006- In the past, MAAS stored commissioning-user-data and pxe/uefi templates in
1007- /etc/maas/templates. As of MAAS 2.1, these templates are no longer available
1008- under /etc/maas.
1009-
1010-Major new features
1011-------------------
1012-
1013-**First user configuration journey (UI)**
1014- MAAS now provides the ability for administrators to perform some initial
1015- configuration immediately after they log-in into the MAAS UI for the first
1016- time. The configuration includes:
1017-
1018- * Ability to change the name of your MAAS
1019- * Ability to configure options that affect connectivity:
1020- * Option to select an Upstream DNS Server (Optional)
1021- * Option to input different Ubuntu Mirrors (Required)
1022- * Option to input an external proxy (Optional)
1023- * Ability to select additional images to download
1024- * Ability to import SSH keys from Launchpad or Github
1025-
1026-**Device discovery**
1027- MAAS will now automatically listen to the network and report any discovered
1028- devices. Devices are identified when the MAAS rack observes them
1029- communicating on an attached IPv4 subnet. Discovered devices that do not
1030- correspond to machines and devices already known to MAAS are shown on the
1031- dashboard. If a device advertises a hostname using mDNS (such as with avahi
1032- or Bonjour), MAAS will also present the discovered hostname in the dashboard.
1033- Using the dashboard, a discovery can quickly be added to MAAS as a device or
1034- as a network interface to a machine or device.
1035-
1036-**Active subnet mapping**
1037- The device discovery feature was designed to operate passively by default.
1038- While MAAS will not send any traffic on attached networks for discovery
1039- purposes unless instructed to, there are two ways to instruct MAAS to map
1040- your networks:
1041-
1042- * On-demand: administrators can choose to map their subnet using an action
1043- on the subnet details page. This action will scan the subnet just once, so
1044- that observed devices on that subnet may quickly be seen in the dashboard.
1045- This feature is useful after initially installing MAAS, to quickly populate
1046- the list of discoveries with active devices on the network.
1047-
1048- * Periodically (recommended): by enabling active discovery on a per-subnet
1049- basis, subnets will be scanned at a user-specified interval. (default is
1050- every three hours) This allows MAAS to maintain current information about
1051- which IP addresses are in use on each subnet.
1052-
1053- Before actively mapping any networks, it is recommended that the ‘nmap’
1054- package be installed on each MAAS rack controller. Doing so results in faster
1055- scans that require less network traffic. (If ‘nmap’ is not installed, MAAS
1056- will resort to scanning using the ‘ping’ utility.)
1057-
1058-**Offline deployment and customizable APT repositories**
1059- MAAS 2.1 improves its offline deployment capabilities by adding support for
1060- Ubuntu derived repositories, PPAs, and custom APT repositories. This enables
1061- MAAS to configure deployed machines with the correct APT repositories and
1062- keyrings, without being dependent on Internet connectivity.
1063-
1064- * Ubuntu Derived Repositories (from an Ubuntu Mirror)
1065- MAAS 2.0 and earlier versions only allowed users to change the Ubuntu
1066- archive to use. This was limited to defining the location of an official
1067- Ubuntu mirror.
1068-
1069- Derived repositories are based on an Ubuntu mirror, but have had packages
1070- added or removed, which requires signing the repository with an unofficial
1071- GPG key. MAAS now allow users to provide GPG key fingerprints to support
1072- this type of repository. These fingerprints are required in order for
1073- the derived repository to be trusted, and will be added to the APT keyring
1074- on each machine.
1075-
1076- * PPAs
1077- PPAs can now be specified, which will be added to the APT sources on
1078- deployed machines. Users may define a GPG key fingerprint in order for
1079- the machine to trust the PPA, for cases where the deployed machine cannot
1080- access the Ubuntu key server.
1081-
1082- * Custom repositories
1083- Custom repositories can be specified to add additional packages to deployed
1084- machines. For custom repositories, the distribution and component can be
1085- customized as appropriate. For example, users would be able to add the
1086- Google Chrome repository, which is as follows:
1087-
1088- deb http://dl.google.com/linux/chrome/deb/ stable main
1089-
1090- In this case, the distribution is “stable”, and the component is “main”.
1091- (Multiple components may also be specified.)
1092-
1093-**MAAS time sync, NTP services and configuration**
1094- MAAS now provides managed NTP services (with ntpd) for all region and rack
1095- controllers. This allows MAAS to both keep its own controllers synchronized,
1096- and keep deployed machines synchronized well.
1097-
1098- * Region controllers synchronize time externally
1099- The MAAS region controller configures the NTP service (ntpd) to keep its
1100- time synchronized from one or more external sources. By default, the MAAS
1101- region controller uses ntp.ubuntu.com. This can be customized on the
1102- settings page.
1103-
1104- * Rack controllers synchronize time from the region controller
1105- The rack controllers also configure the NTP service (ntpd). Unlike the
1106- region controllers, rack controllers synchronize their time from region
1107- controllers, rather than accessing an external time source.
1108-
1109- Rack controllers also configure DHCP with the correct NTP information, so
1110- that any machine on the network that obtains a DHCP lease from MAAS will
1111- benefit from the enhanced NTP support.
1112-
1113- * Controllers and Machines can synchronize time for external time sources only.
1114- MAAS 2.1 also provides the ability to directly use external time sources
1115- without using the Rack Controller as a source of time for machines. This
1116- means that administrators who already have their own NTP infrastructure,
1117- and they don’t want MAAS to provide NTP services, they can tell all
1118- machines and controllers to sync their time from the external time source.
1119- This can be done by selecting the "External Only" option on the Settings
1120- page.
1121-
1122-**Advanced networking: static routes**
1123- MAAS 2.1 introduces the ability to define static routes. This allows
1124- administrators to configure reachability to a subnet from a source subnet.
1125- Administrators can define routes on a per-subnet basis to use a particular
1126- gateway, using a configured destination and metric.
1127-
1128-**Machine networking: bridge configuration**
1129- MAAS now supports the creation of bridge interfaces. This support is limited
1130- to the ability to create a bridge against a single interface, such as for the
1131- purpose of eventually deploying virtual machines or containers on the machine.
1132-
1133- Automatic bridge creation on all configured interfaces can also be performed
1134- at allocation time using the API.
1135-
1136-**Rescue mode**
1137- MAAS 2.1 supports a new state in the machine lifecycle: rescue mode. Rescue
1138- mode allows users to boot a Deployed or a Broken using an ephemeral image.
1139- (That is, Ubuntu is running in memory on the machine.) This allows
1140- administrators to SSH to the machine for maintenance purposes, similar to
1141- running Ubuntu from a USB stick.
1142-
1143-**Enhanced images user interface**
1144- The MAAS images page has been completely redesigned. Improvements include:
1145-
1146- * Supports selecting the image source (maas.io or custom repository).
1147- * Now shows the image releases and architectures available in a repository before the import starts.
1148- * Now displays detailed status throughout the image import process.
1149- * The Boot Images section in the settings page has been removed.
1150-
1151-Minor new features
1152-------------------
1153-
1154-**Disk erasing improvements and secure erase**
1155- In 1.7 (and later) MAAS introduced the ability to erase disks on machine
1156- release. This support was limited to erasing the whole disk and could only
1157- be enabled (or disabled) globally.
1158-
1159- Starting from MAAS 2.1, it now supports the ability to request disk erasure
1160- on a per-machine basis, at the time the machine is released. In addition, new
1161- options for the disk erase mode have been added:
1162-
1163- * Secure erase - If this option is enabled, MAAS will attempt to erase via
1164- secure erase (if the storage device support it), otherwise, it will perform
1165- a full erase or a quick erase (depending on the options provided).
1166-
1167- * Quick erase - If this option is enabled, MAAS will only erase the beginning
1168- and the end of each storage device.
1169-
1170-**Machine networking: - SR-IOV auto-tagging, tags UI**
1171- MAAS now allows the definition of tags per network interface via the WebUI.
1172- Additionally, MAAS also attempts to auto-detect and tag SR-IOV NIC cards.
1173-
1174-**Support for low latency kernels**
1175- Starting from Ubuntu 16.04 “Xenial” and later, “low latency” kernels available
1176- on i386 and amd64 for both GA and HWE kernels. The currently available
1177- lowlatency kernels are:
1178-
1179- * hwe-x-lowlatency - For using the Xenial Lowlatency kernel on Trusty
1180- * ga-16.04-lowlatency - For using the GA lowlatency kernel on Xenial
1181- * hwe-16.04-lowlatency - For using the HWE lowlatency kernel on Xenial.
1182-
1183-**Bootloaders are now provided in the image stream**
1184- Previously, bootloaders where downloaded on the rack controller from the
1185- Ubuntu archives for each architecture MAAS had images for. Starting from MAAS
1186- 2.1, bootloaders are downloaded with the images. All rack controllers retrieve
1187- all supported bootloaders from the region controller. MAAS no longer directly
1188- interacts with the Ubuntu archives.
1189-
1190- In the case that bootloaders are missing from the stream, MAAS will attempt
1191- to locate previous downloads of the bootloader as well as package installs of
1192- the bootloader. Users with image mirrors must ensure image their mirrors
1193- include the bootloaders in order to be running the latest supported versions.
1194-
1195-**SSH keys can be imported from Launchpad or GitHub**
1196- All users will now have the ability to import their SSH public keys from the
1197- UI. Users who log-in to MAAS for the first time will be prompted to import
1198- their SSH keys, if desired. Alternatively, users can import keys later on
1199- their user profile page, or continue to upload keys manually.
1200-
1201-Other notable changes
1202----------------------
1203-
1204-**Better error surfacing for DHCP snippets and package repositories**
1205- Both the DHCP Snippets section and the Package Repositories section have been
1206- improved in order to show errors in a more user-friendly way.
1207-
1208-**Vanilla framework: HTML and CSS updates, smoother look and feel**
1209- The HTML templates and CSS frameworks in MAAS have been completely rebuilt
1210- with the Vanilla CSS framework. Icons and interactions in MAAS have greatly
1211- improved; users will notice smoother, more intuitive interactions with the UI.
1212-
1213- The MAAS team would like to thank the Canonical design and web teams for their
1214- contributions in this area.
1215-
1216-Issues fixed in this release
1217-----------------------------
1218-
1219-A full list of issues fixed in this release is available in the Launchpad 2.1.0
1220-Milestone page
1221-
1222- https://launchpad.net/maas/+milestone/2.1.0
1223-
1224-
1225-2.1.0 (RC1)
1226-===========
1227-
1228-Issues fixed in this release
1229-----------------------------
1230-
1231-LP: #1569365 TestPartition.test_get_partition_number_returns_starting_at_2_for_ppc64el fails spuriously
1232-
1233-LP: #1598470 "Deployed" and "Deploying" are too similar
1234-
1235-LP: #1536354 Users' maas api keys do not have a name
1236-
1237-LP: #1631358 [2.1] Incorrect logging message - showing SERVICE_STATE.ON
1238-
1239-LP: #1631420 [2.1 UI] Images page "Queued for download" is confusing when selections are not saved
1240-
1241-LP: #1631024 [2.1b1] Dashboard column widths for discovered items are wonky
1242-
1243-LP: #1631022 [2.1b1] 'Registering existing rack controller'
1244-
1245-LP: #1629604 [2.1] Command 'interface link-subnet' does not work
1246-
1247-LP: #1628114 [FUJ] SSH input field not indicated for invalid username & the error is incomprehensible
1248-
1249-LP: #1629475 [2.1 ipv6] DHCP generation should not fail when address-family conflicts are present
1250-
1251-LP: #1603466 [2.0rc2] Commissioning node with gateway_link_v4 set fails.
1252-
1253-LP: #1608555 [2.1, 2.0 UI] Error when using dhcp range with pre-existing dynamic reservation
1254-
1255-LP: #1632815 [2.1b2] Node failed to be released, because of the following error: 'NoneType' object has no attribute 'addErrback'
1256-
1257-LP: #1632395 [2.1, Yakkety, UI] UI error when adding a chassis
1258-
1259-LP: #1631079 [2.0, 2.1 UI] Other reserved IP ranges disappear when one of them is deleted on Subnet details page.
1260-
1261-LP: #1630667 [2.1b1] MAAS fails to deploy systems with 3+ TB disks
1262-
1263-LP: #1630633 [2.1 Yakkety UI] Unable to select nodes
1264-
1265-LP: #1629061 [2.0, 2.1] Release and list IPs reserved by another user
1266-
1267-LP: #1605476 [2.0rc2] Changing DNSSEC validation does not trigger configuration file update
1268-
1269-
1270-2.1.0 (beta2)
1271-=============
1272-
1273-Issues fixed in this release
1274-----------------------------
1275-
1276-LP: #1630394 [2.1] Bootloaders not downloaded on initial import
1277-
1278-LP: #1611949 cryptic error when PXE-boot requires an image not yet imported
1279-
1280-LP: #1625676 [2.0, 2.1, UI] MAAS webui allows boot disk to be changed on an already deployed node
1281-
1282-LP: #1630591 Rename "Networks" tab to "Subnets"
1283-
1284-LP: #1628761 [2.1] netaddr assumes MAC OUI is ascii
1285-
1286-LP: #1619262 [2.1, 2.0] Can't input dynamic range on "Enable DHCP" after I deleted the dynamic range
1287-
1288-LP: #1630636 [2.1 ipv6] YAML error when maas_url has an IPv6 IP
1289-
1290-LP: #1612203 Machine unable to pxe with no-such-image while non-related images are being imported
1291-
1292-LP: #1628645 External DHCP detection is broken for a variety of reasons
1293-
1294-LP: #1627362 [2.1] expected string or bytes-like object
1295-
1296-LP: #1614659 [2.1] When trying to release a node, it gets stuck in releasing if there is no rack controller to power control
1297-
1298-LP: #1445941 WebUI needs a filter for deployed OS
1299-
1300-
1301-2.1.0 (beta1)
1302-=============
1303-
1304-Important Announcements
1305------------------------
1306-
1307-**New Hardware Enablement Kernels naming convention**
1308- Starting from MAAS 2.1 and Ubuntu Xenial, MAAS is adhering to a new naming
1309- convention for hardware enablement kernels. On Xenial and above, MAAS will
1310- not support HWE kernels with the old naming convention, but it will support
1311- HWE kernel channel. For Ubuntu Xenial and Yakkety, currently available
1312- kernels in MAAS now are:
1313-
1314- * ga-<version>
1315- The GA, or general availability kernel is the kernel which the Ubuntu
1316- release shipped with. For example ‘ga-16.04’ is the default 4.4 kernel
1317- which shipped on Ubuntu Xenial. The ga kernel contains all bug and security
1318- fixes provided by the Ubuntu archives. Deployments which use the ga
1319- kernel will stay at the same kernel version through upgrades until the
1320- entire release is upgraded with ‘do-release-upgrade.’
1321-
1322- * hwe-<version>
1323- The latest Hardware Enablement Kernel currently available in a given
1324- Ubuntu release. As new Hardware Enable Kernels are released with new
1325- Ubuntu releases the hwe-<version> kernel will be upgraded up until the
1326- next LTS. For example hwe-16.04 is currently the 16.04 GA kernel. Once
1327- 16.10 is released the hwe-16.04 kernel will be upgraded to the 16.10 GA
1328- kernel. The kernel will continue to be upgraded up until and including
1329- the 18.04 GA kernel.
1330-
1331-**New Simplestreams Version - Update your images & your Image repositories**
1332- In order to support the new kernels, MAAS has updated the version of the
1333- MAAS Image streams. Previously MAAS has been using the Streams Version 2,
1334- and as of MAAS 2.1 it will use the MAAS Streams Version 3.
1335-
1336- All users who upgrade from an earlier version of MAAS who have been using
1337- the default image mirror, will be automatically migrated to the new version
1338- of streams.
1339-
1340- For all those users running a custom mirror, MAAS won’t make the migration
1341- automatically. Users are requested to update their image mirror to match the
1342- latest images. This image mirror is now available at
1343- http://images.maas.io/ephemeral-v3/.
1344-
1345-Major new features
1346-------------------
1347-
1348-**Support for Low Latency kernels.**
1349- Starting from MAAS 2.1 Beta 1 and Ubuntu Xenial, MAAS will be making available
1350- the ability to install low latency kernels. Low latency kernels are available
1351- on i386 and amd64 for both GA and HWE kernels. The currently available
1352- lowlatency kernels are
1353-
1354- * hwe-x-lowlatency - For using the Xenial Lowlatency kernel on Trusty
1355- * ga-16.04-lowlatency - For using the GA lowlatency kernel on Xenial
1356- * hwe-16.04-lowlatency - For using the HWE lowlatency kernel on Xenial.
1357-
1358-**Bootloaders are now provided in the SimpleStream.**
1359- Previously bootloaders where downloaded on the Rack Controller from the Ubuntu
1360- archives for each architecture MAAS had images for. Starting with MAAS 2.1
1361- Beta 1 bootloaders are downloaded with the images from the SimpleStream. All
1362- Rack Controllers retrieve all supported bootloaders from the Region Controller.
1363- MAAS no longer directly interacts with the Ubuntu archives.
1364-
1365- In the case that bootloaders are missing from the SimpleStream MAAS will
1366- attempt to locate previous downloads of the bootloader as well as package
1367- installs of the bootloader.
1368-
1369-Minor new features
1370-------------------
1371-
1372-**Active Device Discovery - Map your subnet**
1373- To complete MAAS’ Active Discovery, starting from beta 1 MAAS 2.1 now allows
1374- the user to ‘Map a subnet’, both automatically at regular intervals, or
1375- manually:
1376-
1377- * Manually
1378- Administrators can now Map a subnet manually from the Subnet Details page
1379- under the ‘Take Action’ option. This will allow administrators to map
1380- their subnet. By default, this will use ping but if nmap is installed,
1381- it will automatically use nmap.
1382-
1383- * Automatically
1384- Administrators can now chose to Map their subnets Automatically at regular
1385- intervals. This allows administrators to have MAAS always probe on the
1386- network to find new devices. By default, the automatic mechanism is enabled,
1387- but no subnet is enabled by default.
1388-
1389- To automatically map each subnet, please refer to the ‘Active Discovery’
1390- section on the subnet details page.
1391-
1392-Bugs fixed in this release
1393---------------------------
1394-
1395-LP: #1392763 When changing sync-url via the UI, it's not obvious if syncing starts on its own or not
1396-LP: #1508975 maas deletes products/images locally that do not exist remotely
1397-LP: #1481285 1.8 Boot images tick boxes should be orange
1398-LP: #1629402 [2.1] please cleanup log format for new interface monitoring state
1399-LP: #1629011 Missing punctuation in disk erasing options
1400-LP: #1629008 Missing preposition sentence disk erasing options
1401-LP: #1629004 Typo: "futher"
1402-LP: #1628052 [2.1, FUJ] Help text in input fields is missing 'e.g'
1403-LP: #1459888 Too much spacing between checkboxes/releases in the 'Images'
1404-LP: #1627039 [2.1] Discovery object and view doesn't set a flag when the device is the DHCP server
1405-LP: #1627038 [2.1] SSH key import should use the specified HTTP proxy if one exists
1406-LP: #1625714 DHCP services on rack controllers only publishes external NTP servers
1407-LP: #1625711 Peer selection for NTP servers on region controllers is broken
1408-LP: #1593388 Changing a boot source URL while images are being download doesn't interrupt current downloads to use the new URL
1409-LP: #1623878 [2.1] mDNS label contains disallowed characters
1410-LP: #1394792 MAAS could do a better job of reporting image download status
1411-LP: #1623110 [2.1] Networks page doesn't load fully on yakkety
1412-LP: #1629896 [2.1] Deployment defaulting to hwe-16.04 instead of ga-16.04
1413-LP: #1629491 [2.1] After upgrade to latest trunk (pre-beta1) and after updating images, machines fail to pxe boot due to missing hwe-x kernel
1414-LP: #1629142 2.1 DHCP reported as enabled but not running
1415-LP: #1629045 [2.1] When failing to download images, MAAS leaves old files in the fs
1416-LP: #1629022 [2.1, UI] Broken 'images page' link
1417-LP: #1629019 [2.1 ipv6] log_host needs to be ipv6 when booting ipv6-only
1418-LP: #1628298 [2.1 UI] SSH keys not listed on user page and no button to add keys
1419-LP: #1628213 [2.1 yakkety UI] First user journey doesn't display and can't be skipped
1420-LP: #1627363 [2.1] 'NoneType' object has no attribute 'external_dhcp'
1421-LP: #1627019 [2.1, rev5385] NTP services on region/rack keep showing as ON/OFF constantly
1422-LP: #1623634 [2.1, UX] Trying to cancel an image import from the new Images page results on it not being cancelled on the backend.
1423-LP: #1589640 [2.0b6] MAAS should validate a boot source path actually provides images
1424-
1425-Known issues and workarounds
1426-Trusty images not available on fresh installs
1427-The MAAS Images V3 streams do not yet have Ubuntu Trusty available. These are currently being built to be made available.
1428-
1429-User’s upgrading from a previous version of MAAS that had originally imported Trusty images will continue to be able to deploy Trusty. Once the images are made available, MAAS will automatically update (if so configured).
1430-
1431-LP: #1627362 - expected string or bytes-like object
1432-In some situations after an upgrade, accessing the dashboard might yield error above. This is a difficult to easily reproduce issue. If you come across it please contact a MAAS developer immediately.
1433-
1434-https://bugs.launchpad.net/maas/+bug/1627362
1435-
1436-
1437-2.1.0 (alpha4)
1438-==============
1439-
1440-Important Announcements
1441------------------------
1442-
1443-**MAAS Landing page - Let’s see what’s on your network!**
1444- As of MAAS 2.1 alpha 4, administrative users have a new landing page. Once
1445- administrators log in they will be redirected to the MAAS dashboard.
1446-
1447- This dashboard is where administrators will have some basic information
1448- and the ability to see the observed and discovered devices.
1449-
1450-Major new features
1451-------------------
1452-
1453-**Device discovery UI**
1454- MAAS 2.1 alpha 4 introduces the MAAS Device Discovery UI. As part of the
1455- dashboard, administrative users will be able to see all the observed and
1456- discovered devices.
1457-
1458- MAAS will also allow administrator to properly register those discoveries
1459- as MAAS known devices, and be able to select the IP address allocation for
1460- them, if MAAS is to manage them.
1461-
1462-**Active Device Discovery - map your network (API only)**
1463- As of MAAS 2.1 alpha 2, networks attached to rack controllers are observed
1464- for device discovery purposes. MAAS listens to ARP requests and replies to
1465- determine which IPv4 addresses are in-use on attached networks, and will
1466- resolve their hostnames if possible (when advertised using the mDNS
1467- protocol).
1468-
1469- As of MAAS 2.1 alpha 4, MAAS now has the ability to actively probe subnets.
1470- This allows MAAS to keep its knowledge of which devices are on the network
1471- up-to-date, and discover “quiet” devices that MAAS would not be able to
1472- observe passively. If ‘nmap’ is installed, MAAS will prefer to use it for
1473- scanning (since the scan is faster and will transmit fewer packets). If
1474- ‘nmap’ is not installed, MAAS will fall back to using parallel ‘ping’ requests.
1475-
1476- Scanning is available using the API at the following URL:
1477-
1478- POST /MAAS/api/2.0/discovery/?op=scan
1479-
1480- To scan using the command-line interface, you can use the following syntax:
1481-
1482- maas <profile> discoveries scan [cidr=<cidr> [cidr=<cidr>....] [force=true] [always_use_ping=true] [slow=true] [threads=<num-concurrent-scanning-threads>]
1483-
1484- If you want to scan particular subnets, specify one or more using the cidr
1485- option. For example, ‘cidr=192.168.0.0/24’ would scan for neighbours on
1486- 192.168.0.0/24 on any rack controller configured with an address in that
1487- network. The cidr option can be specified multiple times, such as
1488- ‘cidr=192.168.0.0/24 cidr=192.168.1.0/24’.
1489-
1490- If you want to scan all networks attached to all rack controllers, you must
1491- specify the “force=true” option. (This is not allowed by default, since some
1492- network operators do not allow active neighbour scanning.)
1493-
1494- If your organization has a policy against using ‘nmap’, you will want to use
1495- the ‘always_use_ping’ option, in case ‘nmap’ has been installed on a rack
1496- controller by mistake.
1497-
1498- If quickly scanning your network using ‘nmap’ may raise alerts with an
1499- intrusion detection system, you can use the ‘slow=true’ argument to slow
1500- down scanning. This option has no effect when using ‘ping’, since scanning
1501- using ‘ping’ is already slower. If using ‘ping’, scans can be slowed down or
1502- sped up, if desired, by using the threads option, such as by specifying
1503- “threads=2”. Using the threads option has less impact on nmap threads, which
1504- use a single thread to scan an entire network.
1505-
1506-Minor new features
1507-------------------
1508-
1509-**First User Journey - Import your SSH keys from Launchpad or Github**
1510- The ability to import SSH keys from Launchpad or Github was introduced in
1511- MAAS alpha 3. As of alpha 4, you can do so via the Front-end.
1512-
1513- All users will now have the ability to import their SSH keys from the UI.
1514- All users who log-in to MAAS for the first time will be prompted to import
1515- their SSH keys, if they so desire. Alternatively, users can do so via their
1516- user profile page.
1517-
1518-Other notable changes
1519----------------------
1520-
1521-**NTP Improvements - MAAS NTP vs External**
1522- MAAS now provides the ability to decide between using solely an external NTP
1523- server or a MAAS run NTP server. MAAS run NTP services is the preferred
1524- configuration, but, in order to maintain backwards compatibility,
1525- administrators can chose to use external NTP organizations. This will only
1526- be suitable for scenarios where administrators have restricted communication
1527- between their machines and the MAAS rack controllers.
1528-
1529-Bugs fixed in this release
1530---------------------------
1531-
1532-#1625668 [2.1] When trying to add SSH keys for a GH user that doesn't exist, there's no feedback
1533-#1626748 [2.1] maas admin discoveries scan API output shows rack controller ids instead of names
1534-#1626722 [2.1] DHPv6 addresses do not have netmasks: do not create /128 subnets for them
1535-#1625812 [2.1] Error message is not user friendly
1536-#1625689 [2.1] default gateway cannot be set to fe80::/64 via web ui
1537-#1626727 [2.1] You can define distribution or component for 'ubuntu archive' or 'ubuntu extra architectures'
1538-#1625671 [2.1] Need better error message when trying to add SSH keys for LP/GH user that doesn't exist
1539-#1623994 [2.1] DHCP configuration breaks when NTP servers are unresolvable.
1540-#1626669 [2.1] Can't logout, create users and do other actions
1541-#1625674 [2.1] No feedback when there are no keys to import from LP/GH
1542-
1543-Known issues and workarounds
1544-----------------------------
1545-
1546-**LP: #1623634: Unable to cancel the image import.**
1547- When downloading images, MAAS will fail to cancel the import of all or
1548- any of the images being imported. MAAS will first download all the images
1549- before the user is able to remove them.
1550-
1551- See bug `1617596`_ for more information.
1552-
1553-.. _1617596:
1554- http://launchpad.net/bugs/1617596
1555-
1556-**LP: 1624693: Rack failed to run/register on fresh install**
1557- The MAAS Rack Controller is unable to register after a fresh install due to
1558- being unable to parse network interfaces. After manual restart of maas-rackd,
1559- the rack was successfully registered.
1560-
1561- See bug `1624693`_ for more information.
1562-
1563-.. _1624693:
1564- http://launchpad.net/bugs/1624693
1565-
1566-
1567-2.1.0 (alpha 3)
1568-===============
1569-
1570-Major new features
1571-------------------
1572-
1573-**First User Configuration Journey (UI)**
1574- Starting from alpha 3, MAAS now provides the ability for administrators to
1575- perform some initial configuration when they log-in into the UI for the
1576- first time. The configuration includes:
1577-
1578- * Ability to change the name of your MAAS.
1579- * Ability to configure options that affect connectivity:
1580- * Option to select an Upstream DNS Server (Optional)
1581- * Option to input different Ubuntu Mirrors (Required).
1582- * Option to input an external proxy (Optional)
1583- * Ability to select additional images to download.
1584-
1585-**MAAS time sync, NTP services and configuration**
1586- Starting from alpha 3, MAAS now provides managed NTP services (with ntpd) in
1587- both the Region and Rack controller. This allows MAAS to not only keep its
1588- own controllers time synced, but the deployed machines as well.
1589-
1590- * Region Controller time syncs from external source
1591- The Region Controller configures the NTP service (ntpd) to keep its time
1592- sync from one or various external sources. By default, the MAAS region
1593- controller syncs its time from ntp.ubuntu.com. The default can be changed
1594- by one or multiple external NTP servers from the Settings page, under the
1595- Network Configuration section.
1596-
1597- * Rack Controller time syncs from the Region Controller
1598- The Rack Controllers also configure the NTP service (ntpd). Unlike the
1599- Region Controllers, the Rack Controllers sync their time from the Region
1600- Controller(s) instead of accessing directly to the external time source.
1601-
1602- Additionally, the Rack Controllers also configure DHCP with the correct
1603- NTP information, so that any machine on the network that DHCP’s from MAAS
1604- can benefit of the NTP configuration.
1605-
1606- * Machines configured to sync time from external NTP (transitional).
1607- MAAS also configures deployed machines with NTP configuration. This is done
1608- by cloud-init via MAAS vendor data.
1609-
1610- During the transition period, MAAS will configure machines to use the
1611- external time source (configured under the Settings page). Note that this
1612- is transitional, as in future releases the machines will default to the
1613- Rack Controller for NTP.
1614-
1615-**MAAS Images page re-written in AngularJS**
1616- Continuing the transition from YUI to AngularJS, the MAAS Images page has now
1617- been completely redesigned and reimplemented in AngularJS. Improvements to
1618- the Image page include:
1619-
1620- * Ability to select the image source (maas.io or custom repository).
1621- Show the releases and architectures available in the custom repository
1622- before the import starts.
1623-
1624- * Ability to view the status of the image in the import process.
1625- Show percentage based progress on the image import.
1626-
1627- Additionally, the ‘Boot Images’ section in the Settings page has been removed.
1628-
1629-**Minor new features**
1630-
1631- * (Backend) Ability to import SSH keys from Launchpad and Github
1632- MAAS now provides the ability to import SSH keys for a user from Launchpad
1633- and Github. This is currently supported via the API or via the user
1634- creation process. Users can import their SSH keys when creating their user
1635- for Launchpad or Github:
1636-
1637- maas createadmin --ssh-import lp:<user-id>
1638- maas createadmin --ssh-import gh:<user-id>
1639-
1640- Or via the API based CLI with:
1641-
1642- maas <maas username> sshkeys import protocol=lp auth_id=<user-id>
1643- maas <maas username> sshkeys import protocol=gh auth_id=<user-id>
1644-
1645- * MAAS now provides cloud-init vendor data for NTP
1646- As of MAAS 2.1 alpha 3, MAAS now provide cloud-init vendor data. Vendor
1647- data allows cloud-init to do some initial configurations on the system
1648- before user data is being run. As of 2.1, MAAS will provide NTP
1649- configuration which is delivered via vendor data. Note that this is
1650- dependent on the latest version of cloud-init (0.7.8-1-g3705bb5-0ubuntu1).
1651- This is currently available in Yakkety and is in progress to be available
1652- in Xenial.
1653-
1654- * Add ability to enable or disable network discovery
1655- MAAS now provides the ability to disable the discovery of networks and
1656- devices. By default, discovery is enabled. This setting can be changed
1657- under the Settings page, or via the MAAS CLI and API using the
1658- “network_discovery” configuration key. (Accepted values are “enabled” and
1659- “disabled”.) When discovery is disabled, mDNS records and ARP requests will
1660- no longer be stored in MAAS, and the listening processes on each rack
1661- controller will be shut down.
1662-
1663-Other notable changes
1664----------------------
1665-
1666-**HTML template updates**
1667- In MAAS 2.1 alpha 3, the HTML templates and SCSS framework has been
1668- completely rebuilt and using the current Vanilla CSS framework as its base.
1669- This includes all design patterns and utility classes which would be expected
1670- of a powerful frontend GUI framework.
1671-
1672- HTML and CSS templates have been completely redesigned to use the new
1673- “Vanilla” styles. This brings a refreshed look of icons and interactions that
1674- benefit the UI. While users may not see much difference, it has been
1675- completely re-implemented in the backend.
1676-
1677- Thank you the design and web teams for their contribution to MAAS.
1678-
1679-Known issues and workarounds
1680-----------------------------
1681-
1682-**Unable to cancel the image import.**
1683- When downloading images, MAAS will fail to cancel the import of all or any of
1684- the images being imported. MAAS will first download all the images before the
1685- user is able to remove them.
1686-
1687- See bug `1623634`_ for more information.
1688-
1689-.. _1623634:
1690- http://launchpad.net/bugs/1623634
1691-
1692-**Unable to enable DHCP if NTP server is unresolvable.**
1693- If the NTP server(s) are unresolvable, DHCP will fail to enable. This is
1694- because DHCP doesn’t accept DNS names for DHCP’s NTP configuration, and as
1695- such, MAAS tries to resolve the domain before it is able to set it in the
1696- configuration.
1697-
1698- See bug `1623994`_ for more information.
1699-
1700-.. _1623994:
1701- http://launchpad.net/bugs/1623994
1702-
1703-**Rack failed to run/register on fresh install**
1704- The MAAS Rack Controller is unable to register after a fresh install due to
1705- being unable to parse network interfaces. After manual restart of maas-rackd,
1706- the rack was successfully registered.
1707-
1708- See bug `1624693`_ for more information.
1709-
1710-.. _1624693:
1711- http://launchpad.net/bugs/1624693
1712-
1713-
1714-2.1.0 (alpha2)
1715-==============
1716-
1717-Important Announcements
1718------------------------
1719-
1720-**commissioning-user-data and pxe/uefi templates no longer available**
1721- In the past, MAAS stored commissioning-user-data and pxe/uefi templates
1722- in `/etc/maas/templates`. As of MAAS 2.1.0 Alpha 2, these templates are
1723- no longer available under /etc/maas.
1724-
1725-Major New Features
1726-------------------
1727-
1728-**(Backend) Device Discovery**
1729- As of MAAS 2.1.0 Alpha 2, MAAS will automatically listen to the network
1730- and report any observed devices.
1731-
1732- * New discovery API can be used to get information about what MAAS has
1733- discovered. This API can be used from the command line interface as
1734- follows:
1735-
1736- * maas <profile> discoveries read - Lists all MAC, IP bindings
1737- (discoveries) that MAAS has seen, and attempts to correlate those
1738- discoveries with hostnames advertised by mDNS.
1739- * maas <profile> discoveries by-unknown-mac - Lists all discoveries,
1740- but filters out discoveries where the MAC belongs to an interface
1741- known to MAAS.
1742- * maas <profile> discoveries by-unknown-ip - Lists all discoveries,
1743- but filters out discoveries where the IP address is known to MAAS
1744- (such as reserved by a user, or assigned to a node).
1745- * maas <profile> discoveries by-unknown-ip-and-mac - Lists all discoveries,
1746- but applies the filters for both unknown MACs and unknown IP addresses.
1747-
1748- * Note that the discovery API is currently read-only. It brings together
1749- data from several different sources, including observed network neighbours,
1750- resolved mDNS hostnames, and controller interface information.
1751- * New maas-rack commands have been added, which are called internally by
1752- MAAS in order to gather information about observed devices on the network.
1753- MAAS administrators should not normally need to use these commands
1754- (although they could be helpful for supportability).
1755-
1756- * maas-rack observe-mdns [--verbose]
1757- * sudo maas-rack observe-arp <interface> [--verbose]
1758-
1759- * Note: this feature intentionally does not place any network devices into
1760- “promiscuous mode”, or actively probe. MAAS controllers listen to ARP
1761- traffic they would have received anyway. Therefore, if a MAAS admin wants
1762- to keep MAAS’s knowledge of the network up-to-date, a command such as one
1763- of the following could be run periodically (such as from a script invoked
1764- by a crontab); MAAS will listen to any ARP replies and update its knowledge
1765- of the network:
1766-
1767- * To actively probe one or more subnet CIDRs on an interface:
1768- sudo nmap -e <interface> -sn -n -oX - -PR <cidr> [cidr2] [...]
1769-
1770- * To actively probe for a single IP address from a particular interface
1771- (regardless of whether or not the IP address is routable on-link on that
1772- interface):
1773- ping -r -I <interface> <ip-address> -c 3 -w 1 -i 0.2 -D -O
1774-
1775- * MAAS now depends on the avahi-utils and tcpdump packages in order to provide
1776- this functionality. (Before MAAS 2.1.0 is released, the MAAS team will consider
1777- making these optional dependencies, in case MAAS administrators do not want
1778- to run the avahi daemon, or require that tcpdump not be installed.)
1779-
1780-Important Bugs Fixed in this Release
1781-------------------------------------
1782-
1783-**Bug #1617596: [2.1] Rack(relay) Controller is rejected after upgrade to 2.1**
1784- Fixes a regression regarding registering rack controllers which have bonds
1785- interfaces which are not currently bonding any interfaces.
1786-
1787- See bug `1617596`_ for more information.
1788-
1789-.. _1617596:
1790- http://launchpad.net/bugs/1617596
1791-
1792-**Bug #1615618: [2.1] 'SERVICE_STATE' object has no attribute 'getStatusInfo'**
1793- Fixes a regression in the service tracking mechanism, where it would fail to
1794- successfully track the status of some services.
1795-
1796- See bug `1615618`_ for more information.
1797-
1798-.. _1615618:
1799- http://launchpad.net/bugs/1615618
1800-
1801-
1802-Other Notable Changes
1803----------------------
1804-
1805-**WebUI - Better error surfacing for DHCP snippets and Package Repositories**
1806- Both the DHCP Snippets Section and the Package Repositories section have now
1807- been improvement and will surface better errors.
1808-
1809-Ongoing Work
1810-------------
1811-
1812- * First User Journery - WebUI
1813- * Device Discovery - WebUI
1814- * Improved IPv6 Support
1815- * MAAS Services - NTP
1816- * MAAS Image Consolidation
1817- * Support for HWE Rolling Kernels
1818-
1819-Known Issues and Workarounds
1820-----------------------------
1821-
1822-**Configuring APT key’s in ephemeral environment (overlayfs) fails.**
1823- A regression preventing cloud-init from configuring APT's key in a
1824- ephemeral environment, prevents MAAS from enlisting, commissioning and
1825- deploying `only` when using Derived Repositories or Custom Mirrors that
1826- require a new key.
1827-
1828- See bug `1618572`_ for more information.
1829-
1830-.. _1618572:
1831- http://launchpad.net/bugs/1618572
1832+**Migrating MAAS L3 to L2 spaces**
1833+ MAAS 2.2 has changed the definition of spaces from a Layer 3 concept to a
1834+ Layer 2 concept.
1835+
1836+ The spaces definition in MAAS (first introduced in MAAS 1.9) is “a set of
1837+ subnets that can mutually communicate”. The assumption is that these spaces
1838+ can route to each other, and have appropriate firewall rules for their
1839+ purposes. (For example, a dmz space might contain subnets with internet
1840+ access, and a storage space might contain subnets that can access the same
1841+ storage networks.) Juju uses the current definition in order to ensure that
1842+ deployed applications have access to networks appropriate for the services
1843+ they provide.
1844+
1845+ The current definition of spaces as a L3 concept is problematic, in that
1846+ sometimes Juju wants to deploy applications that themselves create a Layer 3
1847+ subnet. Therefore, it was decided that the concept of spaces will be pushed
1848+ down a layer (to apply to VLANs in MAAS).
1849+
1850+ With spaces as a Layer 2 concept, it is is now “a set of VLANs whose subnets
1851+ can mutually communicate”.
1852+
1853+ As such, starting from MAAS 2.2b1:
1854+
1855+ * VLANs will gain a ‘space’ reference, and subnets will have their spaces
1856+ migrated to the VLANs they are on. On upgrades, if two subnets on the same
1857+ VLAN are in different spaces, the most recently created space will be used
1858+ for both.
1859+
1860+ * Spaces will become optional. Fresh installs will not have a default space
1861+ (e.g. space-0). On upgrades, if only the default space (space-0) exists,
1862+ it will be removed.
1863+
1864+ The following API changes will occur in MAAS 2.2:
1865+
1866+ * Editing a subnet's space will no longer be possible (breaks backwards
1867+ compatibility). Spaces must now be edited each VLAN. For backward
1868+ compatibility, the subnets endpoint will present the underlying VLAN’s space.
1869+
1870+ Recommended actions for MAAS administrators prior to upgrading to MAAS 2.2:
1871+
1872+ * Ensure that no two subnets in the same VLAN are in different spaces, so that
1873+ the upgrade path migrates the expected space to the VLAN. Ensure that each
1874+ VLAN with an assigned space will contain subnets which can mutually
1875+ communicate with other subnets whose VLAN is in the same space. This will
1876+ allow backward compatibility with Juju charms which use the Layer 3 definition
1877+ of spaces.
1878+
1879+ NOTE: Please note that not breakage is expected, provided that most people are not
1880+ using spaces. For those who we know are, they are using them in a compatible way.
1881+ If you experience some type of issue, please contact us.
1882+
1883+Major new features
1884+------------------
1885+
1886+**DHCP Relay support**
1887+ The ability to model the usage of DHCP relays in your networking configuration has
1888+ been added to MAAS. The allows an administrator to identify which VLANs will be
1889+ relayed through another VLAN running a MAAS DHCP server. This will configure the
1890+ MAAS DHCP server running on the primary and/or secondary rack controller to include
1891+ the shared network statement for that VLAN. Note: MAAS does not run a DHCP relay
1892+ service, it is up to the administrator to configure the DHCP relay service on the
1893+ VLAN and point it at the primary and/or secondary rack controller running the MAAS DHCP.
1894+
1895+**Unmanaged subnets**
1896+ In MAAS 2.0, the concept of a “static range” (a specific range of addresses in which
1897+ MAAS was allowed to freely allocate addresses from) was removed from MAAS, in favor
1898+ of the idea that MAAS managing entire subnets. As such, the only way to tell MAAS to
1899+ not allocate certain sections of a subnet is to add a reserved IP range.
1900+
1901+ Starting from MAAS 2.2b1, however, MAAS enhances this functionality by introducing a
1902+ new concept, called unamanged subnets. Setting a Subnet in MAAS as unmanaged, allows
1903+ administrators to prevent MAAS from using that subnet for automatic IP assignment.
1904+ In other words, it is a way to tell MAAS that it knows about a subnet but that it
1905+ shouldn’t use it.
1906+
1907+Other notable changes
1908+---------------------
1909+
1910+**MAAS is now responsive**
1911+ For all of those users that use (or would like to use) MAAS WebUI from their Phone
1912+ or Tablet, will now have a better user experience, provided that starting from
1913+ 2.2b1, MAAS is now responsive.
1914+
1915+ Phone or Table users will see a new slick design for those devices. Thanks for
1916+ the Ubuntu Web team for putting the effort into making MAAS look great in smaller
1917+ devices.
1918+
1919+Known issues and workarounds
1920+----------------------------
1921+
1922+**Cannot add a device from the dashboard**
1923+ Please see LP #1659959 for more information.
1924+
1925+ https://bugs.launchpad.net/maas/+bug/1659959
1926
1927=== modified file 'docs/conf.py'
1928--- docs/conf.py 2016-03-28 13:54:47 +0000
1929+++ docs/conf.py 2017-02-28 15:11:34 +0000
1930@@ -24,7 +24,8 @@
1931 from pytz import UTC
1932
1933 # Configure MAAS's settings.
1934-environ.setdefault("DJANGO_SETTINGS_MODULE", "maas.settings")
1935+environ.setdefault(
1936+ "DJANGO_SETTINGS_MODULE", "maasserver.djangosettings.settings")
1937
1938 # If extensions (or modules to document with autodoc) are in another directory,
1939 # add these directories to sys.path here. If the directory is relative to the
1940
1941=== removed file 'docs/configure.rst'
1942--- docs/configure.rst 2016-03-28 13:54:47 +0000
1943+++ docs/configure.rst 1970-01-01 00:00:00 +0000
1944@@ -1,135 +0,0 @@
1945-Additional Configuration
1946-========================
1947-
1948-
1949-Choosing a series to install
1950-----------------------------
1951-
1952-You may have some specific reason to choose a particular version of Ubuntu
1953-to install on your nodes, perhaps based around package availability,
1954-hardware support or some other reason.
1955-
1956-It is possible to choose a specific series from those available in a
1957-number of ways.
1958-
1959-From the user interface
1960-^^^^^^^^^^^^^^^^^^^^^^^
1961-
1962-The web-based user interface makes it easy to select which Ubuntu series you
1963-wish to install on an individual node. When either adding a node
1964-manually, or on the node page when the node has been automatically
1965-discovered but before it is accepted, there is a drop down menu to select
1966-the version of Ubuntu you wish to install.
1967-
1968-.. image:: media/series.*
1969-
1970-The menu will always list all the currently available series according
1971-to which boot images are available.
1972-
1973-Using the maas command
1974-^^^^^^^^^^^^^^^^^^^^^^
1975-
1976-It is also possible to select a series using the maas command. This
1977-can be done on a per node basis with::
1978-
1979- $ maas <profile> machine update <system_id> distro_series="<value>"
1980-
1981-Where the string contains one of the valid, available distro series (e.g.
1982-"trusty") or is empty for the default value.
1983-
1984-
1985-.. _preseed:
1986-
1987-Altering the Preseed file
1988--------------------------
1989-
1990-.. warning::
1991- Do not try to alter the preseed files if you don't have a good
1992- understanding of what you are doing. Altering the installed version
1993- of Ubuntu can prevent MAAS from working as intended, and may have
1994- security and stability consequences.
1995-
1996-When MAAS commissions a node it installs a version of Ubuntu. The
1997-installation is performed using a 'preseed' file, which is
1998-effectively a list of answers to the questions you would get were
1999-you to run the installer manually.
2000-The preseed file used by MAAS is carefully made so that the
2001-target node can be brought up and do all the jobs expected of it.
2002-However, in exceptional circumstances, you may wish to alter the
2003-pressed file to work around some issue.
2004-There are actually two preseed files, stored here::
2005-
2006- /etc/maas/preseeds/curtin_userdata
2007-
2008-The preseed file is used to customize the installation of a machine
2009-based on different options. Users can set early_commands or late_commands
2010-according to what they need, or customize it based on nodes, architecture
2011-and other variables. The preseeds offers a concept that will allow users
2012-to configure it as required. This is based on a node's ::
2013-
2014- node.system_id
2015- node.hostname
2016- node.domain
2017- node.owner
2018- node.bios_boot_method
2019- node.osystem
2020- node.distro_series
2021- node.architecture
2022- node.min_hwe_kernel
2023- node.hwe_kernel
2024- node.zone
2025- node.cpu_count
2026- node.memory
2027-
2028-You can configure the preseed to add late_commands. For example,
2029-you can configure the preseed to install a package based on the hostname,
2030-and after the installation has been completed::
2031-
2032- late_commands:
2033- {{if node.hostname == 'node01'}}
2034- package_install: ["curtin", "in-target", "--", "apt-get", "-y", "install", "mysql"]
2035- {{endif}}
2036-
2037-
2038-Installing Additional Rack Controllers
2039---------------------------------------
2040-
2041-In an environment comprising large numbers of nodes, it is likely that you will
2042-want to organise the nodes on a more distributed basis. The standard install of
2043-the MAAS region controller includes a rack controller, but it is
2044-possible to add additional rack controllers to the configuration, as
2045-shown in the diagram below:
2046-
2047-.. image:: media/orientation_architecture-diagram.*
2048-
2049-Each rack controller will need to run on a separate Ubuntu server.
2050-Installing and configuring the software is straightforward though::
2051-
2052- $ sudo apt-get install maas-rack-controller
2053-
2054-This meta-package will install all the basic requirements of the system.
2055-
2056-
2057-Configuring the Rack Controller
2058-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2059-
2060-Follow the instructions at :doc:`rack-configuration` to configure
2061-additional Rack Controllers.
2062-
2063-
2064-Client-side DNS configuration
2065------------------------------
2066-
2067-When using a third party tool such as ``juju`` it will need to be able to
2068-resolve the hostnames that the MAAS API returns to it. In order for this to
2069-happen, *client-side DNS* must be configured to point to MAAS's DNS
2070-server. Generally speaking, this is a simple case of adding the following
2071-line to the ``/etc/resolv.conf`` file on your client host::
2072-
2073- nameserver <IP OF MAAS DNS HOST>
2074-
2075-replacing the <IP OF MAAS DNS HOST> with the actual IP address of the host
2076-running the MAAS DNS server.
2077-
2078-However, for hosts using the ``resolvconf`` package, please read its
2079-documentation for more information.
2080
2081=== added file 'docs/development/notifications.rst'
2082--- docs/development/notifications.rst 1970-01-01 00:00:00 +0000
2083+++ docs/development/notifications.rst 2017-02-28 15:11:34 +0000
2084@@ -0,0 +1,198 @@
2085+Notifications
2086+=============
2087+
2088+When you need to inform or warn users, administrators, or a specific
2089+user about something that has happened or is happening, consider using
2090+notifications. These can be created by code running in the region or via
2091+the Web API if you're an administrator.
2092+
2093+Tell all users that MAAS is on fire:
2094+
2095+ >>> from maasserver.models.notification import Notification
2096+
2097+ >>> Notification.objects.create_error_for_users("MAAS is on fire.")
2098+ <Notification ERROR user=None users=True admins=True 'MAAS is ...>
2099+
2100+Warn all admins that MAAS is taking on water:
2101+
2102+ >>> Notification.objects.create_warning_for_admins(
2103+ ... "MAAS is taking on water.")
2104+ <Notification WARNING user=None users=False admins=True ...>
2105+
2106+Tell a specific user that they've won the lottery:
2107+
2108+ >>> from maasserver.testing.factory import factory
2109+ >>> user = factory.make_User()
2110+
2111+ >>> Notification.objects.create_success_for_user(
2112+ ... "Congratulations {name}! You've won €10 in the lottery!",
2113+ ... user=user, context={"name": user.username})
2114+ <Notification SUCCESS user='...' users=False admins=False ...>
2115+
2116+
2117+Context
2118+-------
2119+
2120+A notification's ``context`` is a dict — saved into the database as JSON
2121+— that gets interpolated into the message (new-style, not %-based).
2122+What's its purpose?
2123+
2124+ >>> Notification.objects.create_warning_for_admins(
2125+ ... "Disk space is low; only {amount:0.2f} GiB remaining.",
2126+ ... context={"amount": 1.3}, ident="disk-space-warning")
2127+ <Notification WARNING user=None users=False admins=True 'Disk space ...'>
2128+
2129+Later:
2130+
2131+ >>> ds_warning = Notification.objects.get(ident="disk-space-warning")
2132+ >>> ds_warning.context = {"amount": 0.8}
2133+ >>> ds_warning.save()
2134+
2135+This will update the message, live, in the browser, but will not show it
2136+again to people that have dismissed it already.
2137+
2138+This could be done by just changing the message! True, but the context
2139+does give a convenient location for context of all kinds; it does not
2140+have to be consumed by the message:
2141+
2142+ >>> ii_warning = Notification.objects.create_warning_for_users(
2143+ ... "Image import from {url} has failed.",
2144+ ... ident="import:http://foobar.example.com/",
2145+ ... context={
2146+ ... "url": "http://foobar.example.com/",
2147+ ... "failures": ["2016-02-14 13:58:37"],
2148+ ... })
2149+
2150+Later, after another failure:
2151+
2152+ >>> ii_warning = Notification.objects.get(
2153+ ... ident="import:http://foobar.example.com/")
2154+ >>> ii_warning.context["failures"].append("2016-02-14 16:58:02")
2155+ >>> ii_warning.context["count"] = len(ii_warning.context["failures"])
2156+ >>> ii_warning.context["hours"] = 3 # Calculate this.
2157+ >>> ii_warning.message = (
2158+ ... "Image import from {url} has failed {count} times "
2159+ ... "in the last {hours} hours.")
2160+ >>> ii_warning.save()
2161+ >>> ii_warning.render()
2162+ 'Image import from http://foobar.example.com/ has
2163+ failed 2 times in the last 3 hours.'
2164+
2165+
2166+Rendering and HTML
2167+------------------
2168+
2169+As you can see, rendering the message and context should be done with
2170+the ``render`` method:
2171+
2172+ >>> ds_warning.render()
2173+ 'Disk space is low; only 0.80 GiB remaining.'
2174+
2175+Why?
2176+
2177+Notifications are primarily for a browser environment and so some
2178+limited amount of HTML is tolerated — it's sanitised by AngularJS in the
2179+UI so nothing fancy will get through.
2180+
2181+The ``render`` method knows about this and allows HTML content in the
2182+*message* through, but escapes the *context*:
2183+
2184+ >>> ds_warning.message = "Hello <em>{name}</em>!"
2185+ >>> ds_warning.context = {"name": "<script>nasty();</script>"}
2186+ >>> ds_warning.render()
2187+ 'Hello <em>&lt;script&gt;nasty();&lt;/script&gt;</em>!'
2188+
2189+
2190+Creating notifications
2191+----------------------
2192+
2193+There are many methods to create notifications
2194+
2195+
2196+For a specific user:
2197+^^^^^^^^^^^^^^^^^^^^
2198+
2199+ >>> Notification.objects.create_error_for_user("abc", user)
2200+ <Notification ERROR user='...' users=False admins=False 'abc'>
2201+ >>> Notification.objects.create_warning_for_user("abc", user)
2202+ <Notification WARNING user='...' users=False admins=False 'abc'>
2203+ >>> Notification.objects.create_success_for_user("abc", user)
2204+ <Notification SUCCESS user='...' users=False admins=False 'abc'>
2205+ >>> Notification.objects.create_info_for_user("abc", user)
2206+ <Notification INFO user='...' users=False admins=False 'abc'>
2207+
2208+
2209+For all users:
2210+^^^^^^^^^^^^^^
2211+
2212+ >>> Notification.objects.create_error_for_users("abc")
2213+ <Notification ERROR user=None users=True admins=True 'abc'>
2214+ >>> Notification.objects.create_warning_for_users("abc")
2215+ <Notification WARNING user=None users=True admins=True 'abc'>
2216+ >>> Notification.objects.create_success_for_users("abc")
2217+ <Notification SUCCESS user=None users=True admins=True 'abc'>
2218+ >>> Notification.objects.create_info_for_users("abc")
2219+ <Notification INFO user=None users=True admins=True 'abc'>
2220+
2221+These methods create notifications that are visible to both users and
2222+admins:
2223+
2224+ >>> notification = Notification.objects.create_info_for_users("abc")
2225+ >>> notification.users
2226+ True
2227+ >>> notification.admins
2228+ True
2229+
2230+
2231+For administrators:
2232+^^^^^^^^^^^^^^^^^^^
2233+
2234+ >>> Notification.objects.create_error_for_admins("abc")
2235+ <Notification ERROR user=None users=False admins=True 'abc'>
2236+ >>> Notification.objects.create_warning_for_admins("abc")
2237+ <Notification WARNING user=None users=False admins=True 'abc'>
2238+ >>> Notification.objects.create_success_for_admins("abc")
2239+ <Notification SUCCESS user=None users=False admins=True 'abc'>
2240+ >>> Notification.objects.create_info_for_admins("abc")
2241+ <Notification INFO user=None users=False admins=True 'abc'>
2242+
2243+
2244+For users and **not** administrators:
2245+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2246+
2247+Using the test factory, or by creating a ``Notification`` directly, it's
2248+possible to create a notification that's only for users and not for
2249+admins:
2250+
2251+ >>> notification = factory.make_Notification(users=True, admins=False)
2252+ >>> admin = factory.make_admin()
2253+ >>> notification.is_relevant_to(admin)
2254+ False
2255+
2256+This isn't explicitly catered for in the model API. If you find a need
2257+for this use case, adapt ``NotificationManager`` to accommodate it.
2258+
2259+
2260+Finding notifications
2261+---------------------
2262+
2263+Finding notifications that are both:
2264+
2265+- relevant to a particular user, and
2266+
2267+- have not been dismissed by that user
2268+
2269+should be done with ``find_for_user``:
2270+
2271+ >>> Notification.objects.find_for_user(user)
2272+ [<Notification ...]
2273+
2274+
2275+Well-formed messages
2276+--------------------
2277+
2278+If you use HTML, don't forget to close tags and otherwise respect all
2279+the proper rules of HTML.
2280+
2281+Finally, punctuation. Don't forget to end notification messages with a
2282+full-stop or exclamation mark!
2283
2284=== removed file 'docs/devices.rst'
2285--- docs/devices.rst 2015-05-20 14:56:13 +0000
2286+++ docs/devices.rst 1970-01-01 00:00:00 +0000
2287@@ -1,28 +0,0 @@
2288-.. -*- mode: rst -*-
2289-
2290-.. _devices:
2291-
2292-Devices
2293-========
2294-
2295-.. note::
2296-
2297- This feature is available in MAAS versions 1.8 and above.
2298- If you're writing a client application, you can check if MAAS
2299- supports this feature via the web API; see the documentation for the
2300- ``devices-management`` capability :ref:`here<cap-devices-management>`.
2301-
2302-In addition to nodes, a MAAS cluster controller can manage *devices*. Devices
2303-represent non-installable machines. This feature can be used to track
2304-routers, virtual machines, etc. within MAAS.
2305-
2306-Same as nodes, devices can be assigned IP addresses and DNS names. IP
2307-addresses can be fixed, in which case the device should be configured to use
2308-the defined IP address, or dynamic, in which case the device can obtain an
2309-IP address from the MAAS DHCP server and will receive the configured IP
2310-address.
2311-
2312-Devices can also be assigned a parent node and will be automatically deleted
2313-(along with all the IP address reservations associated with it) when the
2314-parent node is deleted or released. This is designed to model and manage the
2315-virtual machines or containers running on a MAAS-deployed node.
2316\ No newline at end of file
2317
2318=== removed file 'docs/dhcpsnippets.rst'
2319--- docs/dhcpsnippets.rst 2016-03-28 16:52:32 +0000
2320+++ docs/dhcpsnippets.rst 1970-01-01 00:00:00 +0000
2321@@ -1,111 +0,0 @@
2322-.. -*- mode: rst -*-
2323-
2324-.. _dhcpsnippets:
2325-
2326-=========================
2327-DHCP Snippets
2328-=========================
2329-
2330-.. note::
2331-
2332- This feature is available in MAAS versions 2.0 and above. Modifications made
2333- directly to dhcpd.conf.template or dhcpd6.conf.template are no longer
2334- supported.
2335-
2336-MAAS allows customizing dhcpd.conf and dhcpd6.conf through the use of DHCP
2337-snippets. DHCP snippets are user defined dhcpd.conf configuration options which
2338-are inserted into /var/lib/maas/dhcpd.conf and /var/lib/maas/dhcpd6.conf by
2339-MAAS. Custom dhcpd.conf configuration options can be inserted either globally,
2340-on a subnet, or on a node. For information about dhcpd.conf options refer to
2341-the dhcpd.conf man or info page.
2342-
2343-Creating a DHCP Snippet
2344------------------------
2345-
2346-Administrators can create DHCP Snippets over the API using the following command:::
2347-
2348- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options>
2349-
2350-The name of the DHCP snippet will be added to /var/lib/maas/dhcpd.conf and
2351-/var/lib/maas/dhcpd6.conf as a comment above the value. Optionally a
2352-description can also be specified as such::
2353-
2354- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options> description=<DHCP Snippet description>
2355-
2356-Global DHCP Snippets
2357-^^^^^^^^^^^^^^^^^^^^
2358-
2359-If no subnet or node is specified, the DHCP Snippet will be considered global.
2360-A global DHCP Snippet is a configuration option which is applied to all VLANS,
2361-subnets, and nodes. The global_snippet flag can also be used to force a DHCP
2362-Snippet to be global::
2363-
2364- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options> global_snippet=true
2365-
2366-Subnet DHCP Snippets
2367-^^^^^^^^^^^^^^^^^^^^
2368-
2369-DHCP Snippets can be applied only to a specific subnet as follows::
2370-
2371- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options> subnet=<subnet id or cidr>
2372-
2373-Node DHCP Snippets
2374-^^^^^^^^^^^^^^^^^^
2375-
2376-DHCP Snippets can be applied only to a specific node. When a node is specified,
2377-each snippet will be added to the host entry for each interface. A node can be
2378-specified as follows::
2379-
2380- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options> node=<system_id or hostname>
2381-
2382-DHCP Snippet Enablement
2383-^^^^^^^^^^^^^^^^^^^^^^^
2384-
2385-DHCP Snippets can be turned off by using the enabled flag option as follows::
2386-
2387- $ maas <profile> dhcpsnippets create name=<DHCP Snippet Name> value=<valid DHCP configuration options> enabled=false
2388-
2389-Listing DHCP Snippets
2390----------------------
2391-
2392-To list all DHCP Snippets use the following command::
2393-
2394- $ maas <profile> dhcpsnippets read
2395-
2396-To list a particular DHCP Snippet use the following command.::
2397-
2398- $ maas <profile> dhcpsnippet read <DHCP Snippet id or name>
2399-
2400-Updating a DHCP Snippet
2401------------------------
2402-
2403-Administrators can update the DHCP Snippet attributes using the following
2404-command::
2405-
2406- $ maas <profile> dhcpsnippet update <DHCP Snippet id or name> <options>
2407-
2408-DHCP Snippet Value History
2409---------------------------
2410-
2411-MAAS stores the complete history of changes made to the DHCP Snippet's
2412-value. MAAS only uses the latest revision of the value when writing
2413-dhcpd.conf.
2414-
2415-Reverting a Value
2416-^^^^^^^^^^^^^^^^^
2417-
2418-.. warning::
2419- Reverting a value will result in all later versions being deleted!
2420-
2421-The revert operation allows the user to revert to a previous value. When
2422-specifying what to revert to the user can either provide the value id or a
2423-negative number representing how many revivisions to go back::
2424-
2425- $ maas <profile> dhcpsnippet revert <DHCP Snippet id or name> to=<value id or negative number>
2426-
2427-Deleting a DHCP Snippet
2428------------------------
2429-
2430-Administrators can delete a DHCP Snippet using the following command::
2431-
2432- $ maas <profile> dhcpsnippet delete <DHCP Snippet id or name>
2433
2434=== removed file 'docs/getting-help.rst'
2435--- docs/getting-help.rst 2014-08-20 12:07:13 +0000
2436+++ docs/getting-help.rst 1970-01-01 00:00:00 +0000
2437@@ -1,49 +0,0 @@
2438-************
2439-Getting help
2440-************
2441-
2442-Where to get help
2443------------------
2444-
2445-The two channels you can use to get help debugging a MAAS issue are:
2446-
2447-- The `Ask Ubuntu`_ website.
2448-- The `Freenode #maas`_ IRC channel.
2449-
2450-.. _Ask Ubuntu:
2451- http://askubuntu.com/questions/ask?tags=maas
2452-
2453-.. _Freenode #maas:
2454- http://webchat.freenode.net/?channels=maas
2455-
2456-
2457-Gathering debugging information
2458--------------------------------
2459-
2460-If your question is related to a problem related to a specific MAAS installation, we encourage you to gather debugging information and make it available before you head over to Ask Ubuntu or the IRC channel. This way, you'll have all the required information handy for people who can help you.
2461-
2462-Gathering debugging information is a fully automated process that is performed with the help of `sosreport`_.
2463-
2464-If your MAAS server is running Ubuntu version 14.04 (Trusty Tahr) or later, you can get sosreport from the official archives::
2465-
2466- # Install sosreport.
2467- sudo apt-get install -y sosreport
2468- # Create the report.
2469- sudo sosreport -o maas
2470-
2471-Alternatively, if your MAAS server is running a previous Ubuntu release, you'll need to install sosreport manually::
2472-
2473- # Install git.
2474- sudo apt-get install -y git
2475- # Get the latest version of sosreport.
2476- git clone https://github.com/sosreport/sosreport.git /tmp/sosreport
2477- # Create the report.
2478- sudo /tmp/sosreport/sosreport -o maas
2479-
2480-.. _sosreport:
2481- https://github.com/sosreport/sosreport
2482-
2483-This will create a tarball containing MAAS' log files, MAAS' configuration files and a dump of MAAS' database. By default, the tarball will end up in /tmp but you can change the location, see sosreport's manpage for details. If there are things you do not wish to share publicly, feel free to edit the tarball.
2484-
2485-Now, the last step is to make this file available by any means at your disposal (openly accessible FTP server, Dropbox, etc.) in order for the people who will help you to be able to get their hands on it.
2486-
2487
2488=== removed file 'docs/ha.rst'
2489--- docs/ha.rst 2016-06-03 23:10:17 +0000
2490+++ docs/ha.rst 1970-01-01 00:00:00 +0000
2491@@ -1,290 +0,0 @@
2492-.. -*- mode: rst -*-
2493-
2494-.. _ha:
2495-
2496-High Availability (HA) Configuration
2497-====================================
2498-
2499-MAAS 2.0+ supports high availability (HA) across its entire architecture. HA
2500-can be enabled at the rack controller level allowing the ability for
2501-controlling BMCs, providing DHCP, and deploying machines to span across
2502-multiple rack controllers. At the region controller level, HA can be provided
2503-for the API, WebUI, DNS, and APT proxy.
2504-
2505-
2506-Rack Controller HA
2507-------------------
2508-
2509-Rack controller HA is provided for BMCs out of the box. MAAS will
2510-automatically identify which rack controllers can communicate to which BMCs
2511-and pass BMC actions to the correct rack controllers.
2512-
2513-To provide HA for deploying machines, DHCP HA must be turned on. DHCP HA in
2514-MAAS allows a primary and a secondary DHCP server to run on the same VLAN. This
2515-allows a deploying machine to request an IP address from either DHCP server
2516-(primary first) for PXE booting. The responding rack controller will then
2517-handle PXE booting the machine and loading the required files to complete the
2518-deployment. All lease information will be replicated between the primary and
2519-secondary rack controller, allowing one rack controller to fail without
2520-interrupting MAAS operation.
2521-
2522-Enabling DHCP HA
2523-^^^^^^^^^^^^^^^^
2524-
2525-DHCP works at the VLAN level, providing interfaces connected to that VLAN the
2526-ability to get an IP address on a subnet. This requires a subnet be defined
2527-on the VLAN where DHCP will be enabled, along with a range of IPs that will be
2528-assigned to unknown interfaces (called the 'dynamic range'). Enabling DHCP HA
2529-is the same as enabling DHCP without HA; setting a secondary rack controller
2530-will turn DHCP HA on. Follow the instructions at :doc:`rack-configuration` to
2531-enable DHCP HA.
2532-
2533-
2534-Region Controller HA
2535---------------------
2536-
2537-Region controller HA is more complicated, in that MAAS allows you to configure
2538-this in many different configurations. Any number of region controllers can
2539-be added to MAAS, as long as they connect to the same PostgreSQL database. The
2540-only state that is held in MAAS is in the database, allowing region controllers
2541-to be scaled up and scaled down at will.
2542-
2543-Initial Region Controller
2544-^^^^^^^^^^^^^^^^^^^^^^^^^
2545-
2546-The first step to enabling HA for the MAAS region controller is installing the
2547-``maas-region-controller`` package. This package configures everything for you
2548-to start using the MAAS region controller on one machine. It initializes a new
2549-database, runs the migrations, and sets up the default configuration files for
2550-the new MAAS region controller to run. ::
2551-
2552- $ sudo apt update
2553- $ sudo apt install maas-region-controller
2554-
2555-.. note::
2556-
2557- This installs and configures the PostgreSQL database on the same machine as
2558- the region controller. When possible, this is the recommended configuration.
2559- MAAS requires database access to be fast, since all MAAS state (including
2560- operating system images, which will be synchronized with each rack
2561- controller).
2562-
2563-Enabling PostgreSQL HA
2564-^^^^^^^^^^^^^^^^^^^^^^
2565-
2566-MAAS stores all state information in the PostgreSQL database, so it is key to
2567-place this into an HA configuration. PostgreSQL supports many different HA
2568-configurations, but hot standby is recommended as it allows the secondary
2569-database to become the primary quickly and the MAAS region controller can
2570-quickly switch to using the secondary database server as the primary. For
2571-configuring hot standby, the following wiki provides a quick start guide on
2572-setting it up: `https://wiki.postgresql.org/wiki/Hot_Standby`_.
2573-
2574-.. _https://wiki.postgresql.org/wiki/Hot_Standby:
2575- https://wiki.postgresql.org/wiki/Hot_Standby
2576-
2577-Extra Region Controller
2578-^^^^^^^^^^^^^^^^^^^^^^^
2579-
2580-Since this new region will not be setting up its own database, use the
2581-following packages to set up the new region controller::
2582-
2583- maas-region-api maas-dns
2584-
2585-In order to add another region controller to MAAS, you will also need the
2586-*regiond.conf* from the initial region controller. This will allow the new
2587-region controller to connect to the same PostgreSQL database. You will want to
2588-adjust the database_host in the *regiond.conf* to point to the primary database
2589-for PostgreSQL.::
2590-
2591- $ sudo apt update
2592- $ sudo apt install maas-region-api maas-dns
2593- $ sudo systemctl stop maas-regiond
2594- $ sudo rm /var/lib/maas/{maas_id,secret}
2595- $ sudo scp <ubuntu@initial-region>:/etc/maas/regiond.conf /etc/maas/regiond.conf
2596- $ sudo chown root:maas /etc/maas/regiond.conf
2597- $ sudo chmod 640 /etc/maas/regiond.conf
2598- $ sudo maas-region local_config_set --database-host <postgresql-primary-ip>
2599- $ sudo systemctl restart maas-regiond
2600-
2601-Now if you check the MAAS UI or the API, you will see that MAAS has another
2602-region controller. But one issue still exists: the ``bind9`` service will
2603-refuse to start. This is because both BIND and MAAS define some of the same
2604-options in their respective configuration files. Since BIND will not allow you
2605-to use the same option more than once, MAAS needs to migrate the options from
2606-the BIND configuration. ::
2607-
2608- $ sudo maas-region edit_named_options --migrate-conflicting-options
2609- $ sudo systemctl restart bind9
2610-
2611-After that, you should have another fully functioning MAAS region controller!
2612-The DNS configuration and proxy configuration across all region controllers
2613-will stay synced, and you have another server to access the MAAS WebUI and API
2614-endpoints.
2615-
2616-Load Balancing Between Regions (optional)
2617-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2618-
2619-With multiple region controllers, there are several options for load balancing.
2620-One approach is to only use one region controller all the time, and fail over
2621-to another using a virtual IP (VIP). Another approach is to use a load-balancer
2622-and a VIP, to distribute the workload across all active region controllers.
2623-In this example, we will use ``haproxy`` to configure load balancing across the
2624-MAAS region controllers.
2625-
2626-First (on each region controller) ``apache2`` needs to be disabled. While the
2627-``maas-region-api`` package depends on ``apache2`` for its default
2628-configuration, it will conflict with ``haproxy`` (or any other load balancer
2629-running on port 80) if it is enabled. ::
2630-
2631- $ sudo systemctl stop apache2
2632- $ sudo systemctl disable apache2
2633-
2634-Now that ``apache2`` is disabled, ``haproxy`` can be installed and configured.
2635-You will want to change the <server-name> and <server-ip> in the proxy
2636-configuration below to match your infrastructure. ::
2637-
2638- $ sudo apt install haproxy
2639- $ sudo sh -c 'cat >>/etc/haproxy/haproxy.cfg <<EOL
2640-
2641- frontend maas
2642- bind *:80
2643- retries 3
2644- option redispatch
2645- option http-server-close
2646- default_backend maas
2647-
2648- backend maas
2649- timeout server 30s
2650- balance roundrobin
2651- server localhost localhost:5240 check
2652- server <server-name-1> <server-ip-1>:5240 check
2653- server <server-name-2> <server-ip-2>:5240 check
2654- EOL'
2655- $ sudo systemctl restart haproxy
2656-
2657-.. note::
2658-
2659- It is recommended to run a load-balancer on every region controller server
2660- and place a VIP between the servers. This will ensure that the load is
2661- balanced between the servers, and ensure that (if a failure occurs) the
2662- VIP moves over to the another server (which could then distribute
2663- requests to the remaining servers).
2664-
2665-VIP between the Regions
2666-^^^^^^^^^^^^^^^^^^^^^^^
2667-
2668-Whether you configured a load-balancer or not, a VIP (virtual IP) is needed.
2669-The VIP will be used by the rack controllers (and the deploying machines) to
2670-access the region controller API endpoint. In this example, we will show how to
2671-use ``keepalived`` to configure a VIP.
2672-
2673-You will need to adjust checks below, depending on if you are using
2674-``apache2``, or ``haproxy``. You will also need to configure the
2675-interface_name, priority, random_password, and the VIP in the configuration
2676-below. The priority needs to be between 1-255. Larger priority numbers
2677-indicate a greater preference for the server to claim the VIP. ::
2678-
2679- $ sudo apt install keepalived
2680- $ sudo modprobe ip_vs
2681- $ sudo sh -c 'echo modprobe ip_vs >> /etc/modules'
2682- $ sudo sh -c 'echo net.ipv4.ip_nonlocal_bind=1' > /etc/sysctl.d/60-keepalived-nonlocal.conf
2683- $ sudo systemctl restart procps
2684- $ sudo sh -c 'cat >>/etc/keepalived/keepalived.conf <<EOL
2685-
2686- # Un-comment when using haproxy.
2687- #vrrp_script chk_haproxy {
2688- # script "killall -0 haproxy"
2689- # interval 2
2690- #}
2691-
2692- # Un-comment when using apache2.
2693- #vrrp_script chk_apache2 {
2694- # script "killall -0 apache2"
2695- # interval 2
2696- #}
2697-
2698- vrrp_script chk_named {
2699- script "killall -0 named"
2700- interval 2
2701- }
2702-
2703- vrrp_instance maas_region {
2704- state MASTER
2705- interface <interface_name>
2706- priority <priority>
2707- virtual_router_id 51
2708-
2709- authentication {
2710- auth_type PASS
2711- auth_pass <random_password>
2712- }
2713-
2714- track_script {
2715- # Un-comment when using haproxy
2716- #chk_haproxy
2717- # Un-comment when using apache2
2718- #chk_apache2
2719- chk_named
2720- }
2721-
2722- virtual_ipaddress {
2723- <vip>
2724- }
2725- }'
2726- $ sudo systemctl restart keepalived
2727-
2728-.. note::
2729-
2730- If you are enabling this inside of a container, the host of the container
2731- needs the ip_vs module loaded and the sysctl change. A restart of the
2732- container is required once the change has been made in the host.
2733-
2734-Once ``keepalived`` has been configured you will want to adjust the
2735-MAAS_URL on all region controllers and rack controllers to point to that VIP.
2736-That will ensure that all clients and machines use that IP address for
2737-communication.
2738-
2739-On the rack controller's::
2740-
2741- $ sudo maas-rack config --region-url http://<vip>/MAAS
2742- $ sudo systemctl restart maas-rackd
2743-
2744-On the region controller's::
2745-
2746- $ sudo maas-region local_config_set --maas-url http://<vip>/MAAS
2747- $ sudo systemctl restart maas-regiond
2748-
2749-
2750-Deploying HA with Juju
2751-----------------------
2752-
2753-Now that you have an understanding of how to configure HA manually, it
2754-is possible to use Juju to deploy MAAS in an HA configuration. Using Juju
2755-allows you to quickly scale up or scale down the MAAS infrastructure in a
2756-configuration supported by the MAAS team.
2757-
2758-.. note::
2759-
2760- Using Juju to deploy MAAS is not normally how Juju would be used.
2761- Normally, you would first install MAAS, then use Juju to deploy services on
2762- MAAS-managed machines. However, we can use Juju's manual provisioning
2763- support to deploy MAAS to existing Ubuntu systems.
2764-
2765-In the following example, Juju is bootstrapped with manual provisioning,
2766-the machines intended to be used for MAAS services are added, and the services
2767-are deployed and linked together. Be sure to adjust the given numbers based
2768-on what you see in the "juju status" command. (See the Juju documentation
2769-for more details.) The following commands could be used to deploy MAAS::
2770-
2771- $ juju bootstrap maas manual/<ip-of-server>
2772- $ juju add-machine ssh:<ip-of-server>
2773- ... add required machines ...
2774- $ juju deploy postgresql --to 0
2775- $ juju add-unit postgresql --to 1
2776- $ juju deploy maas-region --to 0
2777- $ juju add-unit maas-region --to 1
2778- $ juju add-relation maas-region:db postgresql:db
2779- $ juju deploy maas-rack --to 3
2780- $ juju add-unit maas-rack --to 4
2781- $ juju add-relation maas-region:rpc maas-rack:rpc
2782
2783=== removed file 'docs/hardware-enablement-kernels.rst'
2784--- docs/hardware-enablement-kernels.rst 2015-08-26 02:32:49 +0000
2785+++ docs/hardware-enablement-kernels.rst 1970-01-01 00:00:00 +0000
2786@@ -1,80 +0,0 @@
2787-.. -*- mode: rst -*-
2788-
2789-.. _hardware-enablement-kernels:
2790-
2791-=================================
2792-Using hardware-enablement kernels
2793-=================================
2794-
2795-.. note::
2796-
2797- As of MAAS 1.9 this feature is configured by setting the hwe_kernel variable
2798- instead of the architecture variable.
2799-
2800-MAAS allows you to use hardware enablement kernels when booting nodes
2801-with Ubuntu that require them.
2802-
2803-What are hardware-enablement kernels?
2804--------------------------------------
2805-
2806-Brand new hardware gets released all the time. We want that hardware to
2807-work well with Ubuntu and MAAS, even if it was released after the latest
2808-release of MAAS or Ubuntu. Hardware Enablement (HWE) is all about keeping
2809-pace with the new hardware.
2810-
2811-Ubuntu's solution to this is to offer newer kernels for older releases.
2812-There are at least two kernels on offer for Ubuntu releases: the
2813-"generic" kernel -- i.e. the kernel released with the current series --
2814-and the Hardware Enablement kernel, which is the most recent kernel
2815-release.
2816-
2817-There are separate HWE kernels for each release of Ubuntu, referred to
2818-as ``hwe-<release letter>``. So, the 14.04 / Trusty Tahr HWE kernel is
2819-called ``hwe-t``, the 12.10 / Quantal Quetzal HWE kernel is called
2820-``hwe-q`` and so on. This allows you to use newer kernels with older
2821-releases, for example running Precise with a Saucy (hwe-s) kernel.
2822-
2823-For more information see the `LTS Enablement Stack`_ page on the Ubuntu
2824-wiki.
2825-
2826-.. _LTS Enablement Stack:
2827- https://wiki.ubuntu.com/Kernel/LTSEnablementStack
2828-
2829-
2830-Booting hardware-enablement kernels
2831------------------------------------
2832-
2833-MAAS imports hardware-enablement kernels along with its generic boot
2834-images. These hardware-enablement kernels are specified by using min_hwe_kernel
2835-or hwe_kernel variables.
2836-
2837-The min_hwe_kernel variable is used to instruct MAAS to ensure the release to
2838-be deployed uses a kernel version at or above the value of min_hwe_kernel. For
2839-example if min_hwe_kernel is set to hwe-t when deploying any release before
2840-Trusty the hwe-t kernel will be used. For any release after Trusty the default
2841-kernel for that release will be used. If hwe-t or newer is not availible for
2842-the specified release MAAS will not allow that release to be deployed and throw
2843-an error.
2844-
2845-min_hwe_kernel can be set by running the command::
2846-
2847- $ maas <profile-name> node update <system-id>
2848- min_hwe_kernel=hwe-<release letter>
2849-
2850-It's also possible to set the min_hwe_kernel from the MAAS web UI, by visiting
2851-the Node's page and clicking ``Edit node``. Under the Minimum Kernel field, you
2852-will be able to select any HWE kernels that have been imported onto that node's
2853-cluster controller.
2854-
2855-.. image:: media/min_hwe_kernel.png
2856-
2857-You can also set the hwe_kernel during deployment. MAAS checks that the
2858-specified kernel is avalible for the release specified before deploying the
2859-node. You can set the hwe_kernel when deploying by using the command::
2860-
2861- $ maas <profile-name> node start <system-id> distro_series=<distro>
2862- hwe_kernel=hwe-<release letter>
2863-
2864-Or through the web interface as seen below.
2865-
2866-.. image:: media/hwe_kernel.png
2867
2868=== modified file 'docs/index.rst'
2869--- docs/index.rst 2016-08-15 09:54:43 +0000
2870+++ docs/index.rst 2017-02-28 15:11:34 +0000
2871@@ -39,54 +39,10 @@
2872 .. toctree::
2873 :maxdepth: 2
2874
2875- about
2876- orientation
2877 releases
2878 changelog
2879
2880
2881-************************
2882-Setting up a MAAS server
2883-************************
2884-
2885-.. toctree::
2886- :maxdepth: 2
2887-
2888- install
2889- configure
2890- rack-configuration
2891- ha
2892- static-ips
2893- ipv6
2894- bootsources
2895- nodes
2896- hardware-enablement-kernels
2897- sstreams-mirror
2898- networking
2899- kernel-options
2900- installing-ubuntu
2901- os-support
2902- storage
2903- networking
2904- proxy
2905- devices
2906- dhcpsnippets
2907- packagerepositories
2908- power-driver-capabilities
2909-
2910-
2911-******************
2912-Deploying services
2913-******************
2914-
2915-.. toctree::
2916- :maxdepth: 2
2917-
2918- juju-quick-start
2919- tags
2920- physical-zones
2921-
2922-
2923 ***********************
2924 API / CLI Documentation
2925 ***********************
2926@@ -100,17 +56,6 @@
2927 version
2928
2929
2930-***************
2931-Troubleshooting
2932-***************
2933-
2934-.. toctree::
2935- :maxdepth: 2
2936-
2937- getting-help
2938- troubleshooting
2939-
2940-
2941 ******************
2942 Command-line Tools
2943 ******************
2944@@ -140,6 +85,7 @@
2945 development/tagging
2946 development/preseeds
2947 development/metadata
2948+ development/notifications
2949 development/rpc
2950 development/transactions
2951 development/notes/index
2952
2953=== removed symlink 'docs/install.rst'
2954=== target was u'../INSTALL.txt'
2955=== removed file 'docs/installing-ubuntu.rst'
2956--- docs/installing-ubuntu.rst 2016-05-11 19:01:48 +0000
2957+++ docs/installing-ubuntu.rst 1970-01-01 00:00:00 +0000
2958@@ -1,36 +0,0 @@
2959-=====================================
2960-Installing Ubuntu and deploying nodes
2961-=====================================
2962-
2963-Once a node has been accepted into MAAS and is ready for use, users can
2964-deploy services to that node.
2965-
2966-Prior to deployment, MAAS is responsible for:
2967-
2968-1. Powering up the node.
2969-2. Installing Ubuntu on the node (with the help of :ref:`curtin
2970- <curtin-installer>`).
2971-3. Installing the user's SSH keys on the node.
2972-
2973-Once these steps have been completed, the node is ready to have services
2974-deployed to it, either manually or by using a tool like Juju_.
2975-
2976-.. _Juju: http://juju.ubuntu.com
2977-
2978-
2979-.. _curtin-installer:
2980-
2981-Curtin: The Curt Installer
2982---------------------------
2983-
2984-As the name suggests this installs Ubuntu on a node more quickly than
2985-would be possible using the traditional Debian installer.
2986-
2987-Curtin is enabled by default and is the only mechanism for installing
2988-Ubuntu supported by MAAS. It copies a pre-built Ubuntu image to the
2989-node, with all the packages installed that would be normally found in an
2990-Ubuntu installation. It's very fast!
2991-
2992-For more information about curtin, see its `project page`_ on Launchpad.
2993-
2994-.. _project page: https://launchpad.net/curtin
2995
2996=== removed file 'docs/ipv6.rst'
2997--- docs/ipv6.rst 2014-10-10 13:36:03 +0000
2998+++ docs/ipv6.rst 1970-01-01 00:00:00 +0000
2999@@ -1,150 +0,0 @@
3000-.. -*- mode: rst -*-
3001-
3002-.. _ipv6:
3003-
3004-Managing IPv6 Networks
3005-======================
3006-
3007-.. note::
3008-
3009- This feature is available in MAAS versions 1.7 and above, starting with
3010- lp:maas revision 2992. If you're writing a client application that makes use
3011- of this feature, you can query the region-server API for the
3012- ``ipv6-deployment-ubuntu`` :ref:`capability<cap-ipv6-deployment-ubuntu>`.
3013-
3014-MAAS has limited IPv6 support for networking nodes. It works much like IPv4
3015-support, but with a number of limitations:
3016-
3017-* Nodes still boot, register, and install using the IPv4 network.
3018-* IPv6 addresses are only configured when using the default Ubuntu installer.
3019-* Most BMCs can only be controlled (e.g. to power nodes on/off) using IPv4.
3020-* MAAS still uses IPv4 for its internal operation, installing nodes, etc.
3021-* For now, MAAS only supports IPv6 on networks where it also manages IPv4 DHCP.
3022-* A network interface on a node can only be on one IPv6 subnet.
3023-* A network interface on a cluster controller can manage only one IPv6 subnet.
3024-
3025-The web user interface and REST API can be accessed in the same way on both
3026-IPv4 and IPv6. To use an IPv6 address as the hostname in a URL, in your
3027-browser or elsewhere, surround it with square brackets. For example, on the
3028-local machine (``::1``, the IPv6 equivalent of ``localhost``) you might
3029-request::
3030-
3031- http://[::1]/MAAS/
3032-
3033-If your MAAS server has a DNS hostname that resolves to both IPv4 and IPv6
3034-addresses, your browser may already be accessing the UI through IPv6 without
3035-you noticing.
3036-
3037-
3038-Enabling IPv6
3039--------------
3040-
3041-You enable IPv6 networking in the same way that you enable IPv4 networking:
3042-configure a separate cluster interface for your IPv6 subnet, in addition to the
3043-one you need for your IPv4 subnet. The IPv6 cluster interface must define a
3044-static address range. Provided that you already have a functioning IPv6
3045-network, that's all there is to it. The following sections will go into more
3046-detail about what is supported, what is needed, and what to do if you don't yet
3047-have a functioning IPv6 network.
3048-
3049-An IPv6 cluster interface can use the same network interface on the cluster
3050-controller as an existing IPv4 network interface. It just defines a different
3051-subnet, with IPv6 addressing. A node that's connected to the IPv4 subnet will
3052-also be connected to the IPv6 subnet on the same network segment.
3053-
3054-
3055-Configuring your IPv6 subnet
3056-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3057-
3058-When you configure your IPv6 cluster interface, be sure to define a static IP
3059-address range. Deployed nodes on the subnet will get static addresses in this
3060-range.
3061-
3062-IPv6 networks are normally 64 bits wide, so you can be generous with the
3063-ranges' sizes. It also means that you can leave the netmask field blank.
3064-
3065-(There are no broadcast addresses in IPv6, so leave the broadcast address field
3066-blank as well.)
3067-
3068-You may want MAAS to manage DHCP and DNS, but it's not required. In fact nodes
3069-do not need a DHCP server at all for IPv6; MAAS configures static IPv6
3070-addresses on the node's network interfaces while deploying it. A DHCPv6 server
3071-can provide addresses for containers or virtual machines running on the nodes,
3072-as well as devices on the network that are not managed by MAAS, but it is not
3073-needed for the nodes themselves. MAAS will not be aware of any addresses
3074-issued by DHCP, and does not guarantee that they will stay unchanged.
3075-
3076-
3077-.. _ipv6-routing:
3078-
3079-Routing
3080-^^^^^^^
3081-
3082-In IPv6, clients do not discover routes through DHCP. Routers make themselves
3083-known on their networks by sending out *route advertisements*. These *RAs*
3084-contain other configuration as well: whether clients should statelessly
3085-configure their own unique IP addresses based on their MAC addresses; whether
3086-they should request stateless configuration from a DHCP server; and finally,
3087-whether they should request a stateful IP address from a DHCP server. Since a
3088-network interface can have any number of IPv6 addresses even on a single
3089-subnet, several of these address assignment mechanisms can be combined.
3090-
3091-However, when MAAS configures IPv6 networking on a node, it does not rely on
3092-RAs. it statically configures your nodes' default IPv6 route to use the router
3093-that is configured on the cluster interface, so that the nodes will know their
3094-default gateway. They do not need DHCP and will not autoconfigure global
3095-addresses.
3096-
3097-However, if you are planning to operate DHCPv6 clients as well, e.g. on
3098-machines not managed by MAAS or on virtual machines hosted by MAAS nodes, you
3099-may still want to have RAs configured to make those clients obtain
3100-configuration over DHCP.
3101-
3102-If you need RAs but your gateway does not send them, install and configure
3103-``radvd`` somewhere on the network to advertise its route.
3104-
3105-
3106-Other installers and operating systems
3107-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3108-
3109-Static IPv6 addresses are currently only configured on Ubuntu, when installed
3110-using the "fast" installer. Other operating systems, or Ubuntu with the
3111-classic Debian installer, will not have their IPv6 addresses configured.
3112-The same applies when a user manually installs an operating system on a node,
3113-or overwrites its networking configuration: the node will no longer have its
3114-static IPv6 address configured, even if MAAS has allocated it to the node.
3115-
3116-However, as long as the address remains allocated to the node, you may still
3117-configure its operating system to use that address. The node can then use that
3118-address as if it had been configured by MAAS.
3119-
3120-
3121-Disabling IPv4
3122---------------
3123-
3124-For advanced users, there is an experimental capability to deploy nodes with
3125-pure IPv6, with IPv4 networking disabled. To enable this on a node, check the
3126-"Disable IPv4 when deployed" box on the node's Edit page. The process of
3127-managing and deploying the node will still largely work through IPv4, but once
3128-deployed, the node will have IPv6 networking only.
3129-
3130-In practice nodes may not be functional without IPv4 networking. A few things
3131-are known to be needed in any case:
3132-
3133-
3134-Configuring the MAAS URL
3135-^^^^^^^^^^^^^^^^^^^^^^^^
3136-
3137-The *maas-cluster-controller* package has a configuration item for the URL
3138-where nodes and cluster controllers can reach the MAAS region API.
3139-
3140-By default, this URL is set based on the region controller's IPv4 address. To
3141-make it work for nodes that won't have IP4, you must set the MAAS URL to use
3142-a hostname instead of an IP address. The hostname must resolve to both IPv4
3143-and IPv6 addresses, and both on the cluster controller and on the nodes.
3144-
3145-To change this setting, run::
3146-
3147- dpkg-reconfigure maas-cluster-controller
3148-
3149-It will prompt you for the URL, with its current setting as the initial value.
3150
3151=== removed file 'docs/juju-quick-start.rst'
3152--- docs/juju-quick-start.rst 2016-01-25 14:10:29 +0000
3153+++ docs/juju-quick-start.rst 1970-01-01 00:00:00 +0000
3154@@ -1,145 +0,0 @@
3155-Juju Quick Start
3156-================
3157-
3158-These instructions will help you deploy your first charm with Juju to
3159-a MAAS cluster.
3160-
3161-In the following, we assume that you have a MAAS cluster set-up with at least
3162-2 nodes enlisted with it.
3163-
3164-
3165-Your API key, SSH key, and environments.yaml
3166---------------------------------------------
3167-
3168-You'll need an API key from MAAS so that the Juju client can access
3169-it. Each user account in MAAS can have as many API keys as desired.
3170-One hard and fast rule is that you'll need to use a different API key
3171-for each Juju *environment* you set up within a single MAAS cluster.
3172-
3173-There is no need to explicitly add an SSH key to MAAS when using Juju;
3174-it will automatically put your public key on any hosts that it starts up.
3175-
3176-**Note**: You do not need to use the MAAS web UI or API to allocate
3177-a node to yourself, Juju will do this for you.
3178-
3179-
3180-Getting a key
3181-^^^^^^^^^^^^^
3182-
3183-To get the API key:
3184-
3185-#. Go to your MAAS preferences page (go to your MAAS home page
3186- ``http://${my-maas-server}:80/MAAS/`` and choose *Preferences* from the
3187- drop-down menu that appears when clicking your username at the top-right
3188- of the page).
3189-
3190-#. Optionally add a new MAAS key. Do this if you're setting up another
3191- environment within the same MAAS cluster.
3192-
3193-The ``${my-maas-server}`` slot should be replaced with the hostname of your
3194-MAAS server.
3195-
3196-
3197-Adding an SSH key
3198-^^^^^^^^^^^^^^^^^
3199-
3200-While you're still on the MAAS preferences page, add your SSH key
3201-by clicking *Add SSH key*. Use the public half of your SSH key, the
3202-content of ``~/.ssh/id_rsa.pub`` for example; don't paste the private
3203-half.
3204-
3205-
3206-Creating environments.yaml
3207-^^^^^^^^^^^^^^^^^^^^^^^^^^
3208-
3209-Create or modify ``~/.juju/environments.yaml`` with the following content::
3210-
3211- environments:
3212- maas:
3213- type: maas
3214- maas-server: 'http://${my-maas-server}:80/MAAS'
3215- maas-oauth: '${maas-api-key}'
3216- admin-secret: ${your-admin-secret}
3217- default-series: precise
3218-
3219-Substitute the API key from earlier into the ``${maas-api-key}``
3220-slot, and the hostname of your MAAS server into the ``${my-maas-server}``
3221-slot.
3222-
3223-The ``${your-admin-secret}`` slot should be replaced with a random pass-phrase,
3224-there is no default.
3225-
3226-
3227-Now Juju
3228---------
3229-
3230-If juju-core is not yet installed on the client machine, run::
3231-
3232- $ sudo apt-get install juju-core
3233-
3234-Now, use juju to display the status of the default environment::
3235-
3236- $ juju status
3237-
3238-As you've not bootstrapped you ought to see::
3239-
3240- error: Unable to connect to environment "".
3241- Please check your credentials or use 'juju bootstrap' to create a new environment.
3242-
3243-**Note**: if Juju complains that there are multiple environments and
3244-no explicit default, add ``-e ${environment-name}`` after each
3245-command, e.g.::
3246-
3247- $ juju status -e maas
3248-
3249-Bootstrap::
3250-
3251- $ juju sync-tools
3252- $ juju bootstrap
3253-
3254-If bootstrapping on a version of juju older than 1.14.0 then use::
3255-
3256- $ juju bootstrap --upload-tools
3257-
3258-This will return quickly, but the master node may take a *long* time
3259-to come up. It has to completely install Ubuntu and Juju on it and
3260-reboot before it'll be available for use. It's probably worth either
3261-trying a ``juju status`` once in a while to check on progress, or
3262-following the install on the node directly.
3263-
3264- **Beware** of `bug 413415`_ - *console-setup hangs under chroot
3265- debootstrap with a console login on ttyX* - when monitoring an
3266- installation on the node.
3267-
3268-.. _bug 413415:
3269- https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/413415
3270-
3271-Once the boostrap node has been installed a status command should
3272-come up with something a bit more interesting::
3273-
3274- environment: maas
3275- machines:
3276- "0":
3277- agent-state: started
3278- agent-version: 1.13.3.1
3279- dns-name: kmhwd.master
3280- instance-id: /MAAS/api/2.0/nodes/node-5c5b713a-1afc-11e3-9904-525400123456/
3281- series: precise
3282- services: {}
3283-
3284-Now it's possible to deploy a charm::
3285-
3286- $ juju deploy mysql
3287- $ juju status
3288-
3289-If you have another node free you can finish off the canonical and by
3290-now familiar example::
3291-
3292- $ juju deploy wordpress
3293- $ juju add-relation wordpress mysql
3294- $ juju expose wordpress
3295- $ juju status
3296-
3297-Note that each charm runs on its own host, so each deployment will
3298-actually take as long as it took to bootstrap. Have a beer, drown your
3299-sorrows in liquor, or, my preference, have another cup of tea.
3300
3301=== removed file 'docs/kernel-options.rst'
3302--- docs/kernel-options.rst 2014-02-11 05:21:58 +0000
3303+++ docs/kernel-options.rst 1970-01-01 00:00:00 +0000
3304@@ -1,38 +0,0 @@
3305-===========================
3306-Setting kernel boot options
3307-===========================
3308-
3309-MAAS is able to send specific kernel options to booting nodes on both
3310-a global basis and a per-node basis.
3311-
3312-Global kernel options
3313----------------------
3314-
3315-As an admin, click on the gear icon at the top right and scroll down to
3316-the Global Kernel Parameters section, as shown here:
3317-
3318-.. image:: media/global_kernel_opts.png
3319-
3320-Whatever you set here is sent as-is to all booting nodes.
3321-
3322-Per-node kernel options
3323------------------------
3324-
3325-Per-node kernel options are set using tags. The easiest way of doing this
3326-is to use the ``maas`` command. You will need to :ref:`be
3327-logged in to the API first <api-key>` and then you can add a tag which has its
3328-``kernel_opts`` value set, like this::
3329-
3330- $ maas maas tags new name='nomodeset' \
3331- comment='nomodeset kernel option' kernel_opts='nomodeset vga'
3332-
3333-Once the tag is defined, you can add it to a node or nodes::
3334-
3335- $ maas maas tag update-nodes nomodeset add=<system_id_1> \
3336- add=<system_id_2>
3337-
3338-.. note::
3339-
3340- Any per-node kernel options set will completely override the global options.
3341- If multiple tags attached to a node have the kernel_opts defined, the first
3342- one ordered by name is used.
3343
3344=== removed file 'docs/networking.rst'
3345--- docs/networking.rst 2016-07-08 14:38:44 +0000
3346+++ docs/networking.rst 1970-01-01 00:00:00 +0000
3347@@ -1,270 +0,0 @@
3348-.. -*- mode: rst -*-
3349-
3350-.. _networking:
3351-
3352-=========================
3353-Networking
3354-=========================
3355-
3356-.. note::
3357-
3358- This feature is available in MAAS versions 1.9 and above on Ubuntu
3359- deployments. If you're writing a client application, you can check
3360- if MAAS supports this feature via the web API; see the documentation
3361- for the ``network-deployment-ubuntu`` capability
3362- :ref:`here<cap-network-deployment-ubuntu>`.
3363-
3364-MAAS 1.9 adds support for the modeling of a wide variety of networking concepts
3365-and configurations.
3366-
3367-Networking Concepts
3368--------------------
3369-
3370-At a high level, MAAS supports the following networking concepts:
3371-
3372-Fabrics
3373-^^^^^^^
3374-
3375-A fabric is a set of interconnected VLANs that are capable of mutual
3376-communication. A fabric can be thought of as a logical grouping in which VLANs
3377-can be considered unique.
3378-
3379-For example, a distributed network may have a fabric in London containing
3380-VLAN 100, while a separate fabric in San Francisco may contain a VLAN 100,
3381-whose attached subnets are completely different and unrelated.
3382-
3383-A "Default Fabric" is created when MAAS is installed (or upgraded).
3384-
3385-Subnets
3386-^^^^^^^
3387-
3388-A subnet is a "layer 3" network defined by a particular network prefix, plus
3389-a network mask length (in bits). This notation is also referred to as a *CIDR*.
3390-
3391-MAAS supports IPv4 and IPv6 subnets.
3392-
3393-Examples::
3394-
3395- 10.0.0.0/8
3396- 172.16.0.0/12
3397- 192.168.0.0/16
3398- 2001:db8:4d41:4153::/64
3399-
3400-Subnets can be annotated with a descriptive name, their default gateway,
3401-and/or their DNS server(s).
3402-
3403-A subnet can be in a single space.
3404-
3405-Subnets are considered managed if a cluster interface specifies the cluster
3406-network range.
3407-
3408-**IP Ranges**
3409-
3410-MAAS assumes it can allocate all unreserved IPs in a subnet. For example,
3411-MAAS will assign IPs out of the unreserved pool to node interfaces configured
3412-"IP Address" type "Auto assign". You can reserve IPs for other purposes by
3413-adding one or more "reserved ranges" in your subnet configuration.
3414-
3415-There are two kinds of reserved ranges: "Reserved Range" and "Reserved Dynamic
3416-Range". Use a "Reserved Range" to block out a set of static IPs that you plan
3417-to use for other devices on your network (e.g. managed switches or routers).
3418-
3419-Use a "Reserved Dynamic Range" to block out a set of IP addresses that you
3420-plan to hand out using a DHCP server. If you enable DHCP on your subnet's
3421-VLAN, MAAS will provide a DHCP for IPs in this range, otherwise you are
3422-responsible for proving an external DHCP server for this range.
3423-
3424-Note that a "Reserved Dynamic Range" with active DHCP is *required* if you
3425-have nodes that require DHCP to network boot (e.g. PXE clients), or if you
3426-have configured any node interfaces as "IP Address" type "DHCP".
3427-
3428-
3429-VLANs
3430-^^^^^
3431-
3432-VLANs (Virtual LANs) are a common way to create logically separate networks
3433-using the same physical infrastructure.
3434-
3435-Managed switches can assign VLANs to each port in either a "tagged" or an
3436-"untagged" manner. A VLAN is said to be "untagged" on a particular port when
3437-it is the default VLAN for that port, and requires no special configuration
3438-in order to access.
3439-
3440-"Tagged" VLANs (traditionally used by network administrators in order to
3441-aggregate multiple networks over inter-switch "trunk" lines) can also be used
3442-with nodes in MAAS. That is, if a switch port is configured such that "tagged"
3443-VLAN frames can be sent and received by a MAAS node, that MAAS node can be
3444-configured to automatically bring up VLAN interfaces, so that the deployed node
3445-can make use of them.
3446-
3447-A "Default VLAN" is created for every Fabric, to which every new VLAN-aware
3448-object in the fabric will be associated to by default (unless otherwise
3449-specified).
3450-
3451-Spaces
3452-^^^^^^
3453-
3454-A Space is a logical grouping of subnets that should be able to communicate
3455-with each other. Subnets within each space need not belong to the same fabric.
3456-For example, you may have a "DMZ" space in both your London and San Francisco
3457-fabrics, and a "Storage" space to indicate subnets attached to your storage
3458-network.
3459-
3460-A "space-0" is created when MAAS is installed (or upgraded), which
3461-every subnet will belong to by default (unless otherwise specified).
3462-
3463-Interfaces
3464-^^^^^^^^^^
3465-
3466-**Physical**
3467-
3468-After a node is commissioned, MAAS discovers its physical interfaces. In
3469-addition, devices are created with physical interfaces.
3470-
3471-Prior to deployment, a MAAS administrator can specify additional interfaces
3472-to be configured on the node, including one or more of the below types.
3473-
3474-**Bond**
3475-
3476-A bond interface is capable of aggregating two or more physical interfaces
3477-into a single logical interface. Bonds can be used in conjunction with a
3478-managed switch (using Link Aggregation and Control Protocol, or LACP), or
3479-independently (software bonds).
3480-
3481-**VLAN**
3482-
3483-A VLAN interface can be used to connect to a tagged VLAN, if the switch port
3484-the node is connected to is authorized to access it.
3485-
3486-**Unknown**
3487-
3488-Unknown interfaces cannot be created by users.
3489-
3490-Sometimes, *unknown* interfaces are discovered by MAAS. (For example, when
3491-MAAS learns of a new DHCP lease that is not associated with any known node
3492-or device.)
3493-
3494-How to Configure Nodes for Networking
3495--------------------------------------
3496-
3497-Creating a Bond Interface
3498-^^^^^^^^^^^^^^^^^^^^^^^^^
3499-
3500-Use the ``node-interfaces create-bond`` API to create a bond. For example::
3501-
3502- $ maas admin node-interfaces create-bond node-d83ce230-4b50-11e5-a267-00163eb185eb name=bond0 vlan=0 parents=30 parents=31 mac_address=00:50:56:2b:60:53
3503- Success.
3504- Machine-readable output follows:
3505- {
3506- "name": "bond0",
3507- "links": [],
3508- "tags": [],
3509- "vlan": {
3510- "id": 0,
3511- "resource_uri": "/MAAS/api/2.0/fabrics/0/vlans/0/",
3512- "name": "Default VLAN",
3513- "vid": 0,
3514- "fabric": "fabric-0"
3515- },
3516- "enabled": true,
3517- "id": 41,
3518- "parents": [
3519- "eth0",
3520- "eth1"
3521- ],
3522- "mac_address": "00:50:56:2b:60:53",
3523- "type": "bond",
3524- "children": [],
3525- "resource_uri": "/MAAS/api/2.0/nodes/node-d83ce230-4b50-11e5-a267-00163eb185eb/interfaces/41/"
3526- }
3527-
3528-Note that in the example above, the bond contains two interfaces because
3529-the ``parents`` parameter was specified twice, such as
3530-``parents=30 parents=31``.
3531-
3532-Creating a VLAN Interface
3533-^^^^^^^^^^^^^^^^^^^^^^^^^
3534-
3535-To create a VLAN interface, use the ``node-interfaces create-vlan`` API.
3536-
3537-Be aware that the ``vlan`` paremeter does not indicate a VLAN ID that
3538-corresponds to the VLAN tag. You must first create the VLAN, and then
3539-associate it with the interface. For example::
3540-
3541- $ maas admin vlans create 0 name="Storage network" vid=100
3542- Success.
3543- Machine-readable output follows:
3544- {
3545- "id": 1,
3546- "resource_uri": "/MAAS/api/2.0/fabrics/0/vlans/1/",
3547- "name": "Storage network",
3548- "vid": 100,
3549- "fabric": "fabric-0"
3550- }
3551-
3552-Note that the ``0`` in the command above indicates the ``fabric_id``. If you
3553-have not defined any additional fabrics, the ``fabric_id`` of the default
3554-fabric will be ``0``.
3555-
3556-Now that a VLAN is created, it may be associated with a new interface::
3557-
3558- $ maas admin node-interfaces create-vlan node-d83ce230-4b50-11e5-a267-00163eb185eb vlan=1 parent=30
3559- Success.
3560- Machine-readable output follows:
3561- {
3562- "name": "eth0.100",
3563- "links": [],
3564- "tags": [],
3565- "vlan": {
3566- "id": 1,
3567- "resource_uri": "/MAAS/api/2.0/fabrics/0/vlans/1/",
3568- "name": "Storage network",
3569- "vid": 100,
3570- "fabric": "fabric-0"
3571- },
3572- "enabled": true,
3573- "id": 44,
3574- "parents": [
3575- "eth0"
3576- ],
3577- "mac_address": "00:50:56:2b:60:53",
3578- "type": "vlan",
3579- "children": [],
3580- "resource_uri": "/MAAS/api/2.0/nodes/node-d83ce230-4b50-11e5-a267-00163eb185eb/interfaces/44/"
3581- }
3582-
3583-
3584-Deleting an Interface
3585-^^^^^^^^^^^^^^^^^^^^^
3586-
3587-To delete an interface, use the ``node-interface delete`` API. For example::
3588-
3589- $ maas admin node-interface delete node-d83ce230-4b50-11e5-a267-00163eb185eb 41
3590- Success.
3591-
3592-Machine Interface Configuration
3593-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3594-
3595-**Auto Assign**
3596-
3597-Interfaces configured as "Auto assign" will be deployed with a static
3598-(non-DHCP) network configuration. MAAS will choose an IP from the subnet
3599-that does not fall into a defined reserved range.
3600-
3601-**Static**
3602-
3603-When you configure an interfaces as "Static", you will provide an IP address
3604-for that interface to use when deployed.
3605-
3606-**DHCP**
3607-
3608-Interfaces configured as "DHCP" will be configured to use DHCP to request
3609-configuration information at boot. In order for the interface to successfully
3610-configure, you will need to insure that a "Dynamic Range" has been reserved
3611-on the associated subnet, and that either you have configured MAAS to provide
3612-DHCP services on the associated VLAN, or that you have provided an external
3613-DHCP server to do so.
3614-
3615-**(Unconfigured)**
3616-
3617-These interfaces will be left unconfigured.
3618
3619=== removed file 'docs/nodes.rst'
3620--- docs/nodes.rst 2016-03-28 13:54:47 +0000
3621+++ docs/nodes.rst 1970-01-01 00:00:00 +0000
3622@@ -1,98 +0,0 @@
3623-Adding nodes to the system
3624-==========================
3625-
3626-Now that the MAAS controller is running, we need to make the nodes
3627-aware of MAAS and vice-versa. If you have set up DHCP correctly, and
3628-your nodes can boot via PXE_ then things really couldn't be much easier
3629-and you can use :ref:`the automatic discovery procedure <auto-enlist>`.
3630-You do not need to install Ubuntu on nodes that you wish to add to MAAS
3631-prior to enlistment.
3632-
3633-To learn more about setting up DHCP, read the :ref:`cluster configuration
3634-documentation <rack-configuration>`.
3635-
3636-.. _PXE: http://en.wikipedia.org/wiki/Preboot_Execution_Environment
3637-
3638-.. _auto-enlist:
3639-
3640-Automatic Discovery
3641--------------------
3642-
3643-With nodes set to boot from a PXE image, they will start, look for a
3644-DHCP server, receive the PXE boot details, boot the image, contact the
3645-MAAS server and shut down.
3646-
3647-During this process, the MAAS server will be passed information about
3648-the node, including the architecture, MAC address and other details
3649-which will be stored in the database of nodes. You can accept and
3650-commission the nodes via the web interface. When the nodes have been
3651-accepted the selected series of Ubuntu will be installed.
3652-
3653-To save time, you can also accept and commission all nodes from the
3654-commandline. This requires that you first log in with the API key,
3655-which :ref:`you can retrieve from the web interface <api-key>`::
3656-
3657- $ maas maas nodes accept-all
3658-
3659-
3660-.. _enlist-via-boot-media:
3661-
3662-
3663-Manually add nodes
3664-------------------
3665-
3666-If you know the MAC address of a node, you can manually enter details
3667-about the node through the web interface. Click the ``Add Node`` button
3668-to be taken to the "Add Node" form:
3669-
3670-.. image:: media/add-node.png
3671-
3672-
3673-Virtual machine nodes
3674----------------------
3675-
3676-If you're setting up virtual machines to use as nodes with MAAS, you need
3677-to configure the power type as ``virsh``. For MAAS to be able to use
3678-virsh, make sure you have the ``libvirt-bin`` package installed.
3679-
3680-.. note::
3681-
3682- If you are assembling a set of VMs for testing or development, make
3683- sure they have at least 512 MB (768 MB If you are deploying 15.10)
3684- to avoid failures during deployment.
3685-
3686-The virsh power type takes two parameters:
3687-
3688-Power ID
3689- The Power ID is the name of the virtual machine shown by
3690- ``sudo virsh list --all``
3691-
3692-Address
3693- This is a libvirt connection string, such as
3694- ``qemu+ssh://ubuntu@10.0.0.2/system`` or ``qemu:///system``
3695-
3696-.. image:: media/virsh-config.png
3697-
3698-If you want to use ssh you'll need to generate a ssh key pair for the maas
3699-user. By default there is no home directory created for the maas user::
3700-
3701- $ sudo mkdir /home/maas
3702- $ sudo chown maas:maas /home/maas
3703-
3704-Add a login shell for the maas user::
3705-
3706- $ sudo chsh -s /bin/bash maas
3707-
3708-Become the maas user and generate a SSH keypair::
3709-
3710- $ sudo su - maas
3711- $ ssh-keygen -f ~/.ssh/id_rsa -N ''
3712-
3713-Then add the public key to ``/ubuntu/.ssh/authorized_keys`` on the vm server
3714-so virsh can use ssh without a password::
3715-
3716- $ ssh-copy-id -i ~/.ssh/id_rsa ubuntu@10.0.0.2
3717-
3718-As the maas user, test virsh commands against libvirt at 10.0.0.2::
3719-
3720- $ virsh -c qemu+ssh://ubuntu@10.0.0.2/system list --all
3721
3722=== removed file 'docs/orientation.rst'
3723--- docs/orientation.rst 2014-08-22 00:13:24 +0000
3724+++ docs/orientation.rst 1970-01-01 00:00:00 +0000
3725@@ -1,107 +0,0 @@
3726-.. _orientation:
3727-
3728-Orientation
3729-===========
3730-
3731-
3732-MAAS in Brief
3733--------------
3734-
3735-Canonical’s MAAS brings the dynamism of cloud computing to the world
3736-of physical provisioning and Ubuntu. Connect, commission and deploy
3737-physical servers in record time, re-allocate nodes between services
3738-dynamically, and keep them up to date and in due course, retire them
3739-from use.
3740-
3741-MAAS is a new way of thinking about physical infrastructure. Compute,
3742-storage and network are commodities in the virtual world, and for
3743-large-scale deployments the same is true of the metal. “Metal as a
3744-service” lets you treat farms of servers as a malleable resource for
3745-allocation to specific problems, and re-allocation on a dynamic basis.
3746-
3747-In conjunction with the Juju service orchestration software (see
3748-https://juju.ubuntu.com/docs/), MAAS will enable you to get the most
3749-out of your physical hardware and dynamically deploy complex services
3750-with ease and confidence.
3751-
3752-
3753-Do I Need MAAS?
3754----------------
3755-
3756-MAAS certainly isn't for everyone, but why not ask yourself these
3757-questions?
3758-
3759-You probably *SHOULD* use MAAS if any or all of the following
3760-statements are true:
3761-
3762- * You are trying to manage many physical servers.
3763- * You want to deploy services with the minimum fuss.
3764- * You need to get the most from your resources.
3765- * You want things to work, repeatably and reliably.
3766-
3767-You probably don't need MAAS if any or all of these statements are
3768-true:
3769-
3770- * You don't need to manage physical hardware
3771- * You relish time spent in the server room
3772- * You like trying to set up complicated, critical services without any help
3773-
3774-
3775-.. _setup:
3776-
3777-A Typical MAAS setup
3778---------------------
3779-
3780-MAAS is designed to work with your physical hardware, whether your
3781-setup includes thousands of server boxes or only a few. The key
3782-components of the MAAS software are:
3783-
3784- * Region controller
3785- * Cluster controller(s)
3786- * Nodes
3787-
3788-The nodes are the computers you manage using MAAS. These can range from just
3789-a handful to many thousands of systems.
3790-
3791-For small (in terms of number of nodes) setups, you will probably just
3792-install the Region controller and a cluster controller on the same
3793-server - it is only worth having multiple region controllers if you
3794-need to organise your nodes into different subnets (e.g. if you have a
3795-lot of nodes). If you install the ``maas`` package, it will include both a
3796-region controller and a cluster controller, and they will be automatically
3797-set up to work together.
3798-
3799-.. image:: media/orientation_architecture-diagram.*
3800-
3801-
3802-How MAAS is used
3803-----------------
3804-
3805-MAAS manages a pool of nodes. After registering a new system with the MAAS
3806-and preparing it for service ("commissioning"), the new system joins this pool.
3807-
3808-From the moment a node is accepted into the MAAS, any operating system,
3809-software, or data that it may have had installed before is meant to be
3810-overwritten. A node in the pool is under MAAS's sole control, and off-limits
3811-to users.
3812-
3813-Once you have nodes in the pool, users of the MAAS can allocate them for their
3814-own use. At that point, the nodes are installed with the selected operating
3815-system and set up with the user's login credentials for remote access. This
3816-is referred to as "starting" a node in the browser interface, and as
3817-"acquiring" (and, as a separate step, "starting") a node in the API.
3818-
3819-When allocating from the API, you can specify constraints such as how much
3820-memory you need, how many CPUs, what networks the node should be connected to,
3821-what physical zone they should be in, and so on. API commands can also be
3822-issued through the ``maas`` command-line utility.
3823-
3824-An allocated node is not like a virtual instance in a cloud: you get complete
3825-control, including hardware drivers and root access. To upgrade a BIOS, for
3826-example, an administrator could allocate a node to themselves, and run a
3827-vendor-supplied upgrade utility. Needless to say, you also get full hardware
3828-performance and tweaking!
3829-
3830-Once you are done with a node you have allocated, you can release it back to
3831-the pool. Once again any data, software, or operating system will no longer
3832-be available.
3833
3834=== removed file 'docs/os-support.rst'
3835--- docs/os-support.rst 2015-09-08 18:41:57 +0000
3836+++ docs/os-support.rst 1970-01-01 00:00:00 +0000
3837@@ -1,121 +0,0 @@
3838-.. -*- mode: rst -*-
3839-
3840-.. _os-support:
3841-
3842-=========================
3843-Operating Systems Support
3844-=========================
3845-
3846-.. note::
3847-
3848- This feature is available in MAAS versions 1.7 and above.
3849-
3850-Besides Ubuntu, MAAS allows users to deploy different operating
3851-systems, such as CentOS. Ubuntu Advantage customers can
3852-additionally deploy Redhat Enterprise Linux (RHEL), OpenSUSE, SLES,
3853-Window Server and Windows HyperV.
3854-
3855-
3856-Generated Images vs. Custom Images
3857-----------------------------------
3858-
3859-MAAS supports two different classes of OS images, `Generated images`
3860-and `Custom images`.
3861-
3862-`Generated images` are images of the OS' that MAAS team fully
3863-supports. Currently supported OS' are CentOS and Windows.
3864-
3865-`Custom images` are images that MAAS can deploy, but may have been
3866-customized and differ from those that the MAAS team supports. Custom
3867-images can include any Ubuntu, CentOS or Windows image. Additionally,
3868-Redhat Enterprise Linux (RHEL), OpenSUSE and SLES images also fall
3869-under this category.
3870-
3871-
3872-Installing MAAS Images
3873-----------------------
3874-
3875-Installing Generated Images
3876-^^^^^^^^^^^^^^^^^^^^^^^^^^^
3877-
3878-Installing MAAS Generated Images (CentOS or Windows) can be done with
3879-the command::
3880-
3881- $ maas admin boot-resources create name=<os/series>
3882- architecture=<architecture> [filetype=ddtgz]
3883- content@=<image-name>
3884-
3885-The list of supported Operating Systems under `Generated Images` is:
3886-
3887- * CentOS 6.5 (centos/centos65)
3888- * CentOS 7 (centos/centos7)
3889- * Windows Server 2012 (windows/win2012)
3890- * Windows Server 2012 R2 (windows/win2012r2)
3891- * Windows Hyper-V (windows/win2012hv)
3892- * Windows Hyper-V R2 (windows/win2012hvr2)
3893-
3894-Examples::
3895-
3896- $ maas admin boot-resources create name=centos/centos7
3897- architecture=amd64/generic content@=centos7-amd64-root-tgz
3898-
3899- $ maas admin boot-resources create name=windows/win2012
3900- architecture=amd64/generic filetype=ddtgz
3901- content@=win2012-amd64-ddtgz
3902-
3903-Installing Custom Images
3904-^^^^^^^^^^^^^^^^^^^^^^^^
3905-
3906-Installing custom images require the user to specify a unique
3907-identifier for the OS and Release, as well as the title of the
3908-Image::
3909-
3910- $ maas admin boot-resources create name=custom/<os-release-id>
3911- title=<title> architecture=amd64/generic content@=<image-name>
3912-
3913-Examples::
3914-
3915- $ maas admin boot-resources create name=custom/rhel7
3916- title="RedHat Enterprise Linux 7" architecture=amd64/generic
3917- content@=rhel7-amd64-root-tgz
3918-
3919-The list of tested Operating Systems under `Custom Images` is:
3920-
3921- * OpenSUSE
3922- * SLES 11 and SLES 12
3923- * Redhat Enterprise Linux 7 (RHEL7)
3924-
3925-
3926-MAAS Image Builder
3927-------------------
3928-
3929-The MAAS Image Builder is a script that allows users to generate their
3930-own images. However, ``maas-image-builder`` only supports the generation
3931-of CentOS and RHEL images. To install ``maas-image-builder``, please
3932-follow the instructions::
3933-
3934- $ sudo apt-add-repository ppa:maas-maintainers/stable
3935- $ sudo apt-get install maas-image-builder
3936-
3937-
3938-Creating and Installing CentOS MAAS Images
3939-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3940-
3941-.. note::
3942-
3943- Supported CentOS versions are CentOS 6.5 (centos65) and CentOS 7 (centos7).
3944-
3945-
3946-To create a MAAS CentOS image, no ISO is needed as all of the required
3947-software to create the image is downloaded (from CentOS repositories) as part
3948-of the image generation process. To create the MAAS CentOS image,
3949-``maas-image-builder`` can be used as::
3950-
3951- $ maas-image-builder -a amd64 -o centos7-amd64-root-tgz centos --edition 7
3952-
3953-The created image, ``centos7-amd64-root-tgz``, needs to be uploaded into the
3954-MAAS Region Controller. This image will be listed under the `Generated` Image
3955-Section in the `MAAS Image` page. This image can be uploaded with::
3956-
3957- $ maas admin boot-resources create name=centos/centos7
3958- architecture=amd64/generic content@=./build-output/centos7-amd64-root-tgz
3959
3960=== removed file 'docs/packagerepositories.rst'
3961--- docs/packagerepositories.rst 2016-08-15 09:54:43 +0000
3962+++ docs/packagerepositories.rst 1970-01-01 00:00:00 +0000
3963@@ -1,71 +0,0 @@
3964-.. -*- mode: rst -*-
3965-
3966-.. _packagerepositories:
3967-
3968-====================
3969-Package Repositories
3970-====================
3971-
3972-.. note::
3973-
3974- This feature is available in MAAS versions 2.0 and above.
3975-
3976-MAAS allows the configuring of multiple additional package repositories, which
3977-will find their way into the /etc/apt/sources.list on MAAS deployed machines.
3978-
3979-Creating a Package Repository
3980------------------------------
3981-
3982-Administrators can create Package Repositories over the API using the following command:::
3983-
3984- $ maas <profile> package-repositories create name=<Package Repository Name> url=<URL locating the package repository>
3985-
3986-These are the minimally required parameters - see the online API help,
3987-described below, for the complete list of parameters.
3988-
3989-Package Repository Enablement
3990-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3991-
3992-Package Repositories can be turned off by using the enabled flag option as follows:::
3993-
3994- $ maas <profile> package-repositories create name=<Package Repository Name> url=<URL locating the package repository> enabled=false
3995-
3996-The enabled flag can be modified on an existing repository by using the update
3997-API, described below.
3998-
3999-Listing Package Repositories
4000-----------------------------
4001-
4002-To list all Package Repositories use the following command:::
4003-
4004- $ maas <profile> package-repositories read
4005-
4006-To list a particular Package Repository use the following command:::
4007-
4008- $ maas <profile> package-repository read <Package Repository id or name>
4009-
4010-Updating a Package Repository
4011------------------------------
4012-
4013-Administrators can update the Package Repository attributes using the following
4014-command:::
4015-
4016- $ maas <profile> package-repository update <Package Repository id or name> <options>
4017-
4018-Deleting a Package Repository
4019------------------------------
4020-
4021-Administrators can delete a Package Repository using the following command:::
4022-
4023- $ maas <profile> package-repository delete <Package Repository id or name>
4024-
4025-Getting Help
4026-------------
4027-
4028-Online help is available for all API's in MAAS. For example:::
4029-
4030- $ maas <profile> package-repository --help
4031- $ maas <profile> package-repository <command> --help
4032-
4033- $ maas <profile> package-repositories --help
4034- $ maas <profile> package-repositories <command> --help
4035
4036=== removed file 'docs/physical-zones.rst'
4037--- docs/physical-zones.rst 2014-08-22 00:13:24 +0000
4038+++ docs/physical-zones.rst 1970-01-01 00:00:00 +0000
4039@@ -1,132 +0,0 @@
4040-Physical Zones
4041-==============
4042-
4043-.. note::
4044- This feature is only available in MAAS versions 1.5 and above.
4045-
4046-To help you maximise fault-tolerance and performance of the services you
4047-deploy, MAAS administrators can define *physical zones* (or just *zones*
4048-for short), and assign nodes to them. When a user requests a node, they can
4049-ask for one that is in a specific zone, or one that is not in a specific zone.
4050-
4051-It's up to you as an administrator to decide what a physical zone should
4052-represent: it could be a server rack, a room, a data centre, machines attached
4053-to the same UPS, or a portion of your network. Zones are most useful when they
4054-represent portions of your infrastructure. But you could also use them simply
4055-to keep track of where your systems are located.
4056-
4057-Each node is in one and only one physical zone. Each MAAS instance ships with
4058-a default zone to which nodes are attached by default. If you do not
4059-need this feature, you can simply pretend it does not exist.
4060-
4061-
4062-Applications
4063-------------
4064-
4065-Since you run your own MAAS, its physical zones give you more flexibility
4066-than those of a third-party hosted cloud service. That means that you get to
4067-design your zones and define what they mean. Below are some examples of how
4068-physical zones can help you get the most out of your MAAS.
4069-
4070-
4071-Using Zones for Fault Tolerance
4072-...............................
4073-
4074-If you are concerned about availability of services you deploy through MAAS, a
4075-physical zone could be on one power supply, or it could be an entire data
4076-centre location, or an area of your network that is unlikely to suffer problems
4077-when another zone experiences an outage.
4078-
4079-For example, you might roll out separate instances of the same web application
4080-into different physical zones of the same MAAS, and either load-balance
4081-between them or keep one as a warm stand-by. If one zone suffers a power loss,
4082-is cut off from the internet, or is affected by a natural disaster, the other
4083-instance of your application may still be available in the other zone, and
4084-ready to take over.
4085-
4086-For fault tolerance, machines that work together in order to provide one
4087-instance of a service should generally be allocated in the same zone. The
4088-entire service should have a backup instance in another zone.
4089-
4090-
4091-Using Zones for Performance
4092-...........................
4093-
4094-Even if fault tolerance is not an issue, you may still want to divide your
4095-nodes into groups that communicate efficiently through a high-performance local
4096-network, or share efficient access to external resources.
4097-
4098-When it comes to performance, machines should generally be allocated in the
4099-zone closest to performance-critical resources they need.
4100-
4101-For example, for applications that are highly sensitive to network latency, it
4102-may make sense to divide your MAAS into smaller physical networks, and
4103-represent each of those networks as a physical zone. Now, you can use the
4104-physical zones to allocate nodes just where they get the best performance
4105-when communicating with specific other nodes.
4106-
4107-In another example, your application may rely on a third-party service
4108-available on the internet. If your MAAS is spread out across multiple data
4109-centre locations, you may want the application to be deployed in the location
4110-with the best access to that service.
4111-
4112-
4113-Using Zones for Power Management
4114-................................
4115-
4116-If you are concerned about power density and cooling, you can lay out your
4117-physical zones to match server racks. Instead of allocating machines that
4118-share a physical zone, you can spread out the load by ensuring that "hot"
4119-systems are in located different zones.
4120-
4121-
4122-Creating a Zone
4123----------------
4124-
4125-Only administrators can create and manage zones. To create a physical
4126-zone in the web user interface, log in as an administrator and browse to the
4127-"Zones" section in the top bar. This will takes you to the zones listing page.
4128-At the bottom of the page is a button for creating a new zone:
4129-
4130-.. image:: media/add-zone.*
4131-
4132-Or to do it in the :ref:`region-controller API <region-controller-api>`, POST
4133-your zone definition to the *"zones"* endpoint.
4134-
4135-
4136-Assigning Nodes to a Zone
4137--------------------------
4138-
4139-Once you have created one or more physical zones, you can set nodes' zones
4140-from the nodes listing page in the UI. Select the nodes for which you wish to
4141-set a zone, and choose "Set physical zone" from the "Bulk action" dropdown
4142-list near the top. A second dropdown list will appear, to let you select which
4143-zone you wish to set. Leave it blank to clear nodes' physical zones.
4144-Clicking "Go" will apply the change to the selected nodes.
4145-
4146-You can also set an individual node's zone on its "Edit node" page. Both ways
4147-are available in the API as well: edit an individual node through a ``PUT``
4148-request to the node's URI, or set the zone on multiple nodes at once by calling
4149-the ``set_zone`` operation on the ``nodes`` endpoint.
4150-
4151-
4152-Allocating a Node in a Zone
4153----------------------------
4154-
4155-To deploy in a particular zone, call the ``acquire`` method in the
4156-:ref:`region-controller API <region-controller-api>` as before, but pass the
4157-``zone`` parameter with the name of the zone. The method will allocate a node
4158-in that zone, or fail with an HTTP 409 ("conflict") error if the zone has no
4159-nodes available that match your request.
4160-
4161-Alternatively, you may want to request a node that is *not* in a particular
4162-zone, or one that is not in any of several zones. To do that, specify the
4163-``not_in_zone`` parameter to ``acquire``. This parameter takes a list of zone
4164-names; the allocated node will not be in any of them. Again, if that leaves no
4165-nodes available that match your request, the call will return a "conflict"
4166-error.
4167-
4168-It is possible, though not usually useful, to combine the ``zone`` and
4169-``not_in_zone`` parameters. If your choice for ``zone`` is also present in
4170-``not_in_zone``, no node will ever match your request. Or if it's not, then
4171-the ``not_in_zone`` values will not affect the result of the call at all.
4172
4173=== removed file 'docs/power-driver-capabilities.rst'
4174--- docs/power-driver-capabilities.rst 2016-05-27 22:46:58 +0000
4175+++ docs/power-driver-capabilities.rst 1970-01-01 00:00:00 +0000
4176@@ -1,48 +0,0 @@
4177-.. -*- mode: rst -*-
4178-
4179-*************************
4180-Power Driver Capabilities
4181-*************************
4182-
4183-
4184-**2016-05-23, newell**
4185-
4186-MAAS has internal support for power controlling differents types of hardware.
4187-Not all the power drivers in MAAS have the same capabilities and the table below
4188-details the main differences amongst the power drivers.
4189-
4190-
4191-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4192-| Power Driver | Set PXE On | Power | Chassis | Enhanced UI | BMC |
4193-| X=Yes, Blank=No | Next Boot | Querying | Configuration | Error Reporting | Enlistment |
4194-+=========================+=============+=============+===========+===============+=================+============+
4195-| American Power Conversion (APC) - PDU | | | | | |
4196-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4197-| Cisco UCS Manager | X | X | X | | |
4198-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4199-| Digital Loggers, Inc. - PDU | | | | | |
4200-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4201-| HP Moonshot - iLO Chassis Manager | X | X | X | | |
4202-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4203-| HP Moonshot - iLO4 (IPMI) | X | X | | | X |
4204-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4205-| IBM Hardware Management Console (HMC) | X | X | | | |
4206-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4207-| IPMI | X | X | | X | X |
4208-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4209-| Intel AMT | X | X | | X | |
4210-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4211-| Manual | | | | | |
4212-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4213-| Microsoft OCS - Chassis Manager | X | X | X | | |
4214-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4215-| OpenStack Nova | | X | | | |
4216-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4217-| SeaMicro 15000 | X | X | X | | |
4218-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4219-| Sentry Switch CDU - PDU | | | | | |
4220-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4221-| VMWare | X | X | X | | |
4222-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4223-| Virsh (virtual systems) | X | X | X | | |
4224-+---------------------------------------+-------------+-----------+---------------+-----------------+------------+
4225
4226=== removed file 'docs/proxy.rst'
4227--- docs/proxy.rst 2016-04-07 17:04:26 +0000
4228+++ docs/proxy.rst 1970-01-01 00:00:00 +0000
4229@@ -1,81 +0,0 @@
4230-.. -*- mode: rst -*-
4231-
4232-.. _proxy:
4233-
4234-Proxy Configuration
4235-===================
4236-
4237-In most cases, the machines deployed in a MAAS installation will use a proxy to
4238-access the archive. Alternatively, MAAS can be told to use an externall
4239-configured proxy, or none at all.
4240-
4241-As of MAAS 2.0, the default MAAS region controller configuration will create a
4242-maas-proxy configuration that explicitly allows all of the subnets in the
4243-configuration to use it for a proxy.
4244-
4245-
4246-Assumptions
4247------------
4248-
4249-It is generally assumed that the MAAS region controller is not exposed to
4250-untusted networks. (That is, that there is a firewall between the MAAS region
4251-controller and any such networks.) Prior to MAAS 2.0, the only option if this
4252-was not the case was to manually edit /etc/maas/maas-proxy.conf, or use
4253-iptables to create a firewall on the host.
4254-
4255-As of MAAS 2.0, permission to use the proxy can be managed on a per-subnet
4256-basis. (The default is to allow proxying.)
4257-
4258-.. warning:: If your MAAS Region is connected to an untrusted network, you should disable that subnet in the proxy, as shown below.
4259-
4260-MAAS Proxy Installation
4261------------------------
4262-
4263-When you install a Region Controller, maas-proxy will be installed. The
4264-configuration of the proxy relies on maas-proxy being on the same machine as
4265-the Region Controller.
4266-
4267-
4268-Using an external proxy
4269------------------------
4270-If you want to use an external proxy, see the Network Configuration section of
4271-the web user interface to set the proxy url.
4272-
4273-.. image:: media/external-proxy.png
4274-
4275-Alternatively, the following
4276-command will specify squid.example.com as the proxy, using port 3128::
4277-
4278- $ maas admin maas set-config name=http_proxy value=http://squid.example.com:3128/
4279-
4280-Disable proxying for a Subnet
4281------------------------------
4282-As an example, we will configure MAAS to disable the proxy for a subnet::
4283-
4284- $ maas admin subnet update 192.168.0.0/22 allow_proxy=False
4285-
4286-Enable proxying for a Subnet
4287-----------------------------
4288-To re-enable the proxy for that subnet::
4289-
4290- $ maas admin subnet update 192.168.0.0/22 allow_proxy=True
4291-
4292-Allow an arbitrary subnet to use the Proxy
4293-------------------------------------------
4294-Since the default is to allow proxying, simply create the subnet in MAAS::
4295-
4296- $ maas admin subnets create cidr=192.168.100.0/23
4297-
4298-You may wish to set other parameters on the subnet.
4299-
4300-Disabling proxying
4301-------------------
4302-If you want to not use any proxy, see the Network Configuration section of
4303-the web user interface and uncheck the "Enable the use of an APT and HTTP/HTTPS
4304-proxy" box.
4305-
4306-.. image:: media/no-proxy.png
4307-
4308-Alternatively, the following command will disable the proxy::
4309-
4310- $ maas admin maas set-config name=enable_http_proxy value=False
4311
4312=== removed file 'docs/rack-configuration.rst'
4313--- docs/rack-configuration.rst 2016-04-26 17:31:11 +0000
4314+++ docs/rack-configuration.rst 1970-01-01 00:00:00 +0000
4315@@ -1,192 +0,0 @@
4316-.. -*- mode: rst -*-
4317-
4318-.. _rack-configuration:
4319-
4320-Rack Controller Configuration
4321-=============================
4322-
4323-Before any of MAAS's features can be used for the first time, you must have
4324-a Rack Controller and configure at least one VLAN to manage DHCP for at least
4325-a subnet. Each machine can be attached to any number of subnets, which may or
4326-may not be managed by MAAS.
4327-
4328-Managing a VLAN normally means that MAAS will server DHCP from the Rack
4329-Controller, for the purpose of providing IP address to machines that
4330-are being enlisted or commissioned. Also, any other DHCP client that is
4331-on the VLAN will obtain a dynamic IP address from the MAAS DHCP server.
4332-
4333-**Do this only on a network that was set up with this in mind**. Enabling
4334-your own DHCP server that competes with an existing one that's
4335-being managed by MAAS can cause serious disruption, and it can be hard
4336-for administrator to track the source of the problem. Worse, the problems
4337-may not become immediately noticeable. Make sure you understand the
4338-implications of running a DHCP server before doing this. If MAAS detects any
4339-DHCP servers already running on these networks, it will show them on the
4340-rack's configuration page.
4341-
4342-
4343-Network requirements
4344---------------------
4345-
4346-The Rack Controller manages DHCP for subnet(s) in the VLAN(s) that it is
4347-connected to via one of its interfaces defined in MAAS. Rack Controller
4348-interfaces are discovered automatically, when MAAS is installed, and any
4349-future changes are automatically communicated to the region.
4350-
4351-When a Rack Controller manages machines on the network through one of the
4352-VLANs it is connected to, the machines must be in the same subnet as the
4353-Rack Controller interface connected to that VLAN. This is because:
4354-
4355-#. If the VLAN that the Rack Controller is connected to is configured to
4356- provide DHCP, the nodes must be able to configure their own network
4357- interfaces using MAAS's DHCP server. This means that either they must
4358- be on the same subnet, or that DHCP packets are being specially routed
4359- between the machine's subnet and MAAS' DHCP server.
4360-
4361-
4362-Registration
4363-------------
4364-
4365-If you install your first Rack Controller on the same system as the Region
4366-Controller, as is the case when you install the full "maas" ubuntu package,
4367-it will be automatically accepted by default (but not yet configured, see
4368-below). Any other Rack Controllers you set up will show up automatically
4369-after they have been manually added to MAAS.
4370-
4371-To install a new MAAS Rack Controller, at the command line, type::
4372-
4373- $ sudo apt-get install maas-rack-controller
4374-
4375-Once installed, you will need to input the shared secret, in order
4376-to allow the Rack Controller to authenticate with the Region Controller.
4377-You can obtain the shared secret from the Region Controller. The
4378-shared secret can be copied from the Region Controller in::
4379-
4380- /var/lib/maas/secret
4381-
4382-Once you have copied the secret, you can install it in the Rack
4383-Controller. At the command line, type::
4384-
4385- $ sudo maas-rack install-shared-secret
4386-
4387-Once installed, you will need to reconfigure the Rack Controller
4388-to correctly point to the API hostname or IP address of the Region
4389-Controller that's on the same network as the Rack Controller::
4390-
4391- $ sudo dpkg-reconfigure maas-rack-controller
4392-
4393-The configuration for the MAAS Rack Controller will automatically
4394-run and pop up this config screen:
4395-
4396-.. image:: media/install_cluster-config.*
4397-
4398-This is where the MAAS Rack Controller is prompting for the URL
4399-of the MAAS Region Controller. Once entered, the Rack Controller
4400-configuration will be complete.
4401-
4402-
4403-Interface Management
4404---------------------
4405-
4406-MAAS automatically recognises the network interfaces on each Rack
4407-Controller. Some (though not necessarily all) of these will be connected
4408-to subnets on a VLAN inside a Fabric. In other words, the Rack Controllers
4409-will be connected to VLANs, and the subnets being served on these.
4410-
4411-Once a new Rack Controller is connected, it will try to autodetect in
4412-what Subnet, VLAN and even Fabric the interface is connected to. If these
4413-have not being created, new Subnets, VLAN's and Fabrics and Spaces will
4414-be created.
4415-
4416-If Fabrics, VLANs and Subnets are already created, once MAAS automatically
4417-recognises the Rack Controller network interfaces, it will try to determine
4418-to which these are connected to before being able to provide services.
4419-
4420-As such, each Rack Controller interface will determine whether a Rack
4421-Controller can provide DHCP on an specific VLAN, or for advanced configuration,
4422-a Rack Controller interface will determine whether a Rack Controller
4423-can be a primary or backup Rack on an HA configuration.
4424-
4425-If for any reason, the Rack Controller interfaces are mis-identified
4426-and are in the correct fabric, the user can manually change that by
4427-editing the Rack Controller Fabric information:
4428-
4429-.. image:: media/rack-interface-edit.png
4430-
4431-
4432-In order for MAAS to be able to manage a machine throught its lifecycle,
4433-it needs to provide DHCP for at least one subnet, by configuring the
4434-corresponding VLAN to which the Rack Controller is connected to.
4435-
4436-
4437-Providing DHCP + HA
4438--------------------
4439-In order for MAAS to be able to manage machines on the network, and more
4440-specifically, in order to be able to enlist, commission and deploy machines
4441-it needs to provide and manage DHCP. As such, Rack Controller(s) can
4442-provide DHCP on the different VLANs it is connected to.
4443-
4444-Dynamic range & addresses
4445-^^^^^^^^^^^^^^^^^^^^^^^^^
4446-Starting from MAAS 2.0, a Dynamic range needs to be defined in order for
4447-MAAS to be able to provide DHCP for machines. The purpose of the dynamic
4448-range is to:
4449-
4450- * provide DHCP for machines that are performing auto-registration (also
4451- called enlistment), or
4452- * provide DHCP for machines that are being commissioned.
4453-
4454- This means that when a machine is being enlisted or commissioned, they
4455- DHCP from the dynamic range in order to perform those two steps.
4456-
4457- In turn, however, machines that are being deployed will, by default,
4458- obtain static IP addresses (DHCP or otherwise) from the section of the
4459- subnet that has not been reserved for the Dynamic Range on such VLAN.
4460- This allows the machine to obtain IP addresses that will remain
4461- allocated to a machine throughout the rest of its deployment.
4462-
4463-Enabling a DHCP on a VLAN (optional HA)
4464-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4465-As an example, we will configure MAAS to provide DHCP on a Rack
4466-Controller.
4467-
4468-The first thing that we need to do is select in what VLAN and subnet
4469-we would like to configure DHCP. In this case, in order to be able
4470-to PXE boot machines, we need to configure DHCP for an 'untagged' VLAN
4471-under any fabric. In this example, we will chose the 'untagged' VLAN on
4472-'fabric-0'. The subnet '192.168.10.0/24' is on this 'untagged' VLAN. We
4473-can see that the Rack Controller has access to this VLAN via its 'eth0'
4474-interface.
4475-
4476-The second step is to create a dynamic range::
4477-
4478- $ maas admin ipranges create type=dynamic start_ip=192.168.10.28 end_ip=192.168.10.100
4479-
4480-The third, and last step is to enable DHCP on a VLAN. For this to be
4481-effective we need to at least select the Primary Rack controller that will
4482-provide DHCP::
4483-
4484- $ maas admin vlan update fabric-0 untagged dhcp_on=True primary_rack=node01
4485-
4486-If enabling DHCP HA is something you need for your MAAS deployment, then
4487-following operation would enable HA::
4488-
4489- $ maas admin vlan update fabric-0 untagged dhcp_on=True primary_rack=node01 secondary_rack=node02
4490-
4491-Note that if you are enabling DHCP over the CLI, but the subnet doesn't have a
4492-Gateway IP defined, you can define the gateway using::
4493-
4494- $ maas admin subnet update 192.168.10.0/24 gateway_ip=192.168.10.1
4495-
4496-You can also do the same configuration via the WebUI on the VLAN details page:
4497-
4498-.. image:: media/vlan_provide_dhcp.png
4499-
4500-
4501-Multiple networks
4502------------------
4503-
4504-A single Rack Controller can be connected to more than one VLAN, each from a
4505-different Rack Controller interface. This allows one Rack Controller to
4506-manage different subnets to help scale your Rack Controller or to satisfy
4507-your network architecture.
4508
4509=== modified file 'docs/releases.rst'
4510--- docs/releases.rst 2016-04-11 16:23:26 +0000
4511+++ docs/releases.rst 2017-02-28 15:11:34 +0000
4512@@ -1,62 +1,29 @@
4513+*************
4514 MAAS Releases
4515-=============
4516-
4517-
4518-MAAS currently has the following releases:
4519-
4520-
4521-1.5
4522----
4523-
4524-* Status: Deprecated.
4525-* Last release: 1.5.4
4526-* Location: ubuntu/trusty
4527-* Support:
4528-
4529- * Release has been deprecated.
4530- * No longer providing updates.
4531- * Users need to upgrade to 1.7 or 1.9.
4532-
4533-
4534-1.7
4535----
4536-
4537-* Status: Old Stable Release
4538-* Current Release: 1.7.6
4539-* Location: ubuntu/trusty-updates
4540-* Support:
4541-
4542- * It is currently only supported on Ubuntu trusty-updates.
4543- * It will be supported until 1.9 series is SRU'd into Trusty.
4544- * It will be deprecated once supreseeded by 1.9 around February 2016.
4545-
4546-
4547-1.8
4548----
4549-
4550-* Status: Deprecated
4551-* Initial release data: June 2015
4552-* Current release: 1.8.3
4553-* Location: No longer available
4554-* Support:
4555-
4556- * Release has been deprecated.
4557- * No longer providing updates.
4558- * Users need to upgrade to 1.9.
4559-
4560+*************
4561+
4562+Stable Release
4563+==============
4564
4565 1.9
4566 ---
4567
4568+ * Status: Old Stable Release
4569+ * Latest version: 1.9.4
4570+ * Support: Ubuntu Trusty LTS. Only critical issues.
4571+
4572+2.1
4573+---
4574+
4575 * Status: Current Stable Release
4576- * Initial Release date: November 2015
4577- * Current release: 1.9.0
4578- * Location: ppa:maas/stable
4579- * Support: This will be an LTS release.
4580-
4581-
4582-2.0
4583+ * Latest version: 2.1.3
4584+ * Support: Ubuntu Xenial LTS.
4585+
4586+Development release
4587+===================
4588+
4589+2.2
4590 ---
4591
4592- * Status: New Development Release
4593- * Estimated Release Date: March or April 2016
4594+ * Status: Current development release
4595+ * Localtion: ppa:maas/next
4596
4597=== removed file 'docs/sstreams-mirror.rst'
4598--- docs/sstreams-mirror.rst 2016-10-17 20:43:34 +0000
4599+++ docs/sstreams-mirror.rst 1970-01-01 00:00:00 +0000
4600@@ -1,64 +0,0 @@
4601-Local Mirroring of Boot Images
4602-==============================
4603-
4604-Boot images are delivered to MAAS via the simplestreams protocol. It is
4605-useful in some situations, such as testing, to mirror the images locally
4606-so that you don't need to repeatedly pull them down over a slower Internet
4607-link.
4608-
4609-First, install the required packages on the host where you wish to store
4610-the mirrored images::
4611-
4612- $ sudo apt-get install simplestreams ubuntu-cloudimage-keyring apache2
4613-
4614-Now you can pull the images over using the mirroring tools for simplestreams.
4615-This example gets the daily trusty (14.04) and xenial (16.04) images for the
4616-amd64 architecture::
4617-
4618- $ sudo sstream-mirror --keyring=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg https://images.maas.io/ephemeral-v3/daily/ /var/www/html/maas/images/ephemeral-v3/daily 'arch=amd64' 'release~(trusty|xenial)' --max=1
4619-
4620-This may take a while as hundreds of megabytes will be downloaded.
4621-
4622-As of MAAS 2.1 bootloaders are now included in the simplestream. In order for
4623-MAAS to work bootloaders must be mirrored as well. It is recommended that all
4624-bootloaders are mirrored::
4625-
4626- $ sudo sstream-mirror --keyring=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg https://images.maas.io/ephemeral-v3/daily/ /var/www/html/maas/images/ephemeral-v3/daily 'os~(grub*|pxelinux)' --max=1
4627-
4628-The images will be written to the local disk and you can verify their
4629-presence by browsing to
4630-``http://<server>/maas/images/ephemeral-v3/daily/streams/v1/index.sjson``
4631-(replace ``<server>`` with your own server's name).
4632-
4633-It is a good idea to configure a ``cron`` job to repeat this import on a
4634-regular basis to keep your mirror up-to-date.
4635-
4636-
4637-Configuring MAAS to use the local mirror
4638-----------------------------------------
4639-
4640-You can do this using the API or the web UI. To do this via the API you
4641-can use the ``maas`` (see :doc:`maascli`) command, logged in as the admin
4642-user::
4643-
4644- $ maas <profile> boot-sources create url=http://<server>/images/ephemeral-v3/daily/ keyring_filename=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
4645-
4646-Note that if you wish to use older images (which change far less frequently,
4647-but will be lacking security updates), you can use the ``releases`` stream,
4648-such as::
4649-
4650- $ maas <profile> boot-sources create url=http://<server>/images/ephemeral-v3/releases/ keyring_filename=/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
4651-
4652-And then initiate the download with::
4653-
4654- $ maas <profile> boot-resources import
4655-
4656-See :doc:`bootsources` for more detail.
4657-
4658-In the web UI, browse to the Settings tab as the admin user and scroll down
4659-to the "Boot Images" section. There you will find input boxes for the
4660-Sync URL and the keyring path, which should be set as the values in the API
4661-example above.
4662-
4663-The import is initiated by browsing to the Images tab and following the
4664-instructions on that page.
4665
4666=== removed file 'docs/static-ips.rst'
4667--- docs/static-ips.rst 2016-03-28 13:54:47 +0000
4668+++ docs/static-ips.rst 1970-01-01 00:00:00 +0000
4669@@ -1,53 +0,0 @@
4670-.. _static-ips:
4671-
4672-Static IPs
4673-==========
4674-
4675-.. note::
4676-
4677- This feature is available in MAAS versions 1.6 and above.
4678- If you're writing a client application, you can check if MAAS
4679- supports this feature via the web API; see the documentation for the
4680- ``static-ipaddresses`` capability :ref:`here<cap-static-ipaddresses>`.
4681-
4682-Previously, MAAS relied on the DHCP server to allocate its own IP
4683-addresses to nodes, using the IP range defined on the relevant cluster
4684-interface. This was found to be unreliable since the IPs were only known
4685-once the node had booted and requested an address, and had race conditions
4686-when the lease expired and another machine was looking for its own IP.
4687-
4688-MAAS now defines an additional range on the cluster for static IPs that
4689-are allocated by MAAS itself (see :doc:`rack-configuration` for more
4690-information about this).
4691-
4692-In normal operation, MAAS will automatically choose and allocate a static IP to
4693-any node network interfaces where it knows on which cluster interface that node
4694-interface is connected.
4695-
4696-The :doc:`api` contains functions to request additional static IPs, which are
4697-summarised here:
4698-
4699-Sticky IPs
4700-----------
4701-Synopsis:
4702- ``POST /api/2.0/nodes/{system_id}/`` ``op=claim_sticky_ip_address``
4703-
4704-Normally, IPs are released back into the pool of available IPs once a node
4705-is released by a user. A "Sticky" IP is one which is allocated to an interface
4706-on a node that does not change unless the sticky IP is removed. This enables
4707-more predictable IPs at the cost of wasting IPs when the node is not in use.
4708-
4709-Unmanaged User-allocated IPs
4710-----------------------------
4711-Synopsis:
4712- ``GET /api/2.0/ipaddresses/``
4713-
4714- ``POST /api/2.0/ipaddresses/`` ``op=release``
4715-
4716- ``POST /api/2.0/ipaddresses/`` ``op=reserve``
4717-
4718-This API allows users to request an ad-hoc IP address for use in any way they
4719-see fit. The IP is not tied to any node in MAAS and is guaranteed not to be
4720-in use by MAAS itself.
4721-
4722-See the full :doc:`api` documentation for precise technical details.
4723
4724=== removed file 'docs/storage.rst'
4725--- docs/storage.rst 2016-01-25 14:10:29 +0000
4726+++ docs/storage.rst 1970-01-01 00:00:00 +0000
4727@@ -1,679 +0,0 @@
4728-.. -*- mode: rst -*-
4729-
4730-.. _storage:
4731-
4732-=========================
4733-Storage
4734-=========================
4735-
4736-.. note::
4737-
4738- This feature is available in MAAS versions 1.9 and above on Ubuntu
4739- deployments. If you're writing a client application, you can check
4740- if MAAS supports this feature via the web API; see the documentation
4741- for the ``storage-deployment-ubuntu`` capability
4742- :ref:`here<cap-storage-deployment-ubuntu>`.
4743-
4744-MAAS has the ability to configure any storage layout during node deployment.
4745-MAAS doesn't just do simple partitioning it supports complex storage layouts,
4746-including setting up and configuring Bcache, RAID, and LVM. This gives users
4747-unlimited possibilities on the storage configurations they want to deploy.
4748-
4749-Layouts
4750--------
4751-
4752-When a node is acquired by a user it gets a default storage layout. This layout
4753-provides the basic storage configuration to allow a node to deploy
4754-successfully. The default storage layout can also be adjusted allowing an
4755-administrator to make the decision on which layout will be the default.
4756-
4757-The users deploying nodes are not limited by the default. They can set an
4758-explicit storage layout when they acquire a node or after they have acquried a
4759-node with the set-storage-layout API. The user acquiring a node or performing
4760-the set-storage-layout API calls can also customize the layout generation. Each
4761-layout has a set of options that can be set to adjust the generated layout.
4762-
4763-Below list all the available storage layouts and the available options for
4764-each.
4765-
4766-LVM Layout
4767-^^^^^^^^^^
4768-
4769-Creates a volume group `vgroot` on a partition that spans the entire boot disk.
4770-A logical volume `lvroot` is created for the full size of the volume group. The
4771-`lvroot` is formatted with `ext4` and set as the `/` mount point.
4772-::
4773-
4774- NAME SIZE TYPE FSTYPE MOUNTPOINT
4775- sda 100G disk
4776- sda1 512M part fat32 /boot/efi
4777- sda2 99.5G part lvm-pv(vgroot)
4778- vgroot 99.5G lvm
4779- lvroot 99.5G lvm ext4 /
4780-
4781-The following options are supported for this layout.
4782-::
4783-
4784- boot_size: Size of the boot partition on the boot disk. Default is 0,
4785- meaning not to create the boot partition. The '/boot' will be placed
4786- on the root filesystem.
4787- root_device: The block device to place the root partition on. Default is
4788- the boot disk.
4789- root_size: Size of the root partition. Default is 100%, meaning the
4790- entire size of the root device.
4791- vg_name: Name of the created volume group. Default is `vgroot`.
4792- lv_name: Name of the created logical volume. Default is `lvroot`.
4793- lv_size: Size of the created logical volume. Default is 100%, meaning
4794- the entire size of the volume group.
4795-
4796-Flat Layout
4797-^^^^^^^^^^^
4798-
4799-Creates a partition that spans the entire boot disk. The partition is formatted
4800-with `ext4` and set as the `/` mount point.
4801-::
4802-
4803- NAME SIZE TYPE FSTYPE MOUNTPOINT
4804- sda 100G disk
4805- sda1 512M part fat32 /boot/efi
4806- sda2 99.5G part ext4 /
4807-
4808-The following options are supported for this layout.
4809-::
4810-
4811- boot_size: Size of the boot partition on the boot disk. Default is 0,
4812- meaning not to create the boot partition. The '/boot' will be placed
4813- on the root filesystem.
4814- root_device: The block device to place the root partition on. Default is
4815- the boot disk.
4816- root_size: Size of the root partition. Default is 100%, meaning the
4817- entire size of the root device.
4818-
4819-Bcache Layout
4820-^^^^^^^^^^^^^
4821-
4822-Creates a Bcache using a partition that spans the entire boot disk as the
4823-backing device. Uses the smallest block device tagged with `ssd` as the cache
4824-device. The Bcache device is formatted with `ext4` and set as the `/` mount
4825-point. If no block devices exists on the node that are tagged with `ssd` then
4826-the Bcache device will not be created and the `flat` layout will be used.
4827-::
4828-
4829- NAME SIZE TYPE FSTYPE MOUNTPOINT
4830- sda 100G disk
4831- sda1 512M part fat32 /boot/efi
4832- sda2 99.5G part bc-backing
4833- sdb 50G disk
4834- sdb1 50G part bc-cache
4835- bcache0 99.5G disk ext4 /
4836-
4837-The following options are supported for this layout.
4838-::
4839-
4840- boot_size: Size of the boot partition on the boot disk. Default is 0,
4841- meaning not to create the boot partition. The '/boot' will be placed
4842- on the root filesystem.
4843- root_device: The block device to place the root partition on. Default is
4844- the boot disk.
4845- root_size: Size of the root partition. Default is 100%, meaning the
4846- entire size of the root device.
4847- cache_device: The block device to use as the cache device. Default
4848- is the smallest block device tagged ssd.
4849- cache_mode: The cache mode to set the created Bcache device to. Default
4850- is `writethrough`.
4851- cache_size: The size of the partition on the cache device. Default is
4852- 100%, meaning the entire size of the cache device.
4853- cache_no_part: Whether or not to create a partition on the cache device.
4854- Default is false, meaning to create a partition using the given
4855- `cache_size`. If set to true no partition will be created and the raw
4856- cache device will be used as the cache.
4857-
4858-.. note::
4859-
4860- The `/boot/efi` partition on all layouts will only be created on nodes that
4861- deploy with UEFI.
4862-
4863-
4864-Setting the Layout
4865-------------------
4866-
4867-The following are a couple of was the storage layout can be changed either
4868-globally, on acquire, or after acquire.
4869-
4870-Globally
4871-^^^^^^^^
4872-
4873-The global default storage layout can be set using the API and the UI. This
4874-will change the default storage layout for when a node is acquired. `It will
4875-not adjust the layout of any node that is already passed the acquire stage.`::
4876-
4877- $ maas my-maas-session maas set_config name=default_storage_layout value=flat
4878-
4879-Set Storage Layout
4880-^^^^^^^^^^^^^^^^^^
4881-
4882-If a node is already acquired and you want to adjust the storage layout the
4883-set_storage_layout API call can be used. The options for this API call do not
4884-require the `storage_layout_` prefix.::
4885-
4886- $ maas my-maas-session node set-storage-layout <system-id> storage_layout=lvm lv_size=50%
4887-
4888-.. note::
4889-
4890- This will completely remove any previous storage configuration on all block
4891- devices.
4892-
4893-Block Devices
4894--------------
4895-
4896-Once the initial storage layout has been configure on a node you can perform
4897-many operations to view and adjust the entire storage layout for the node. In
4898-MAAS there are two different types of block devices.
4899-
4900-**Physical**
4901-
4902-A physical block device is a physically attached block device. This being true
4903-storage on a machine. E.g. A 100G hard drive in a server.
4904-
4905-**Virtual**
4906-
4907-A virtual block device is a block device that is exposed by the Linux kernel
4908-when an operation is performed. Almost all the operations on a physical block
4909-device can be performed on a virtual block device. E.g. A RAID device exposed
4910-as `md0`.
4911-
4912-List Block Devices
4913-^^^^^^^^^^^^^^^^^^
4914-To view all block devices on a node use the `read` operation. This list both
4915-physical and virtual block devices.::
4916-
4917- $ maas my-maas-session block-devices read node-f4e2281c-d19a-11e4-a5ac-00163edde41f
4918- [
4919- {
4920- "size": 21474836480,
4921- "resource_uri": "/MAAS/api/2.0/nodes/node-f4e2281c-d19a-11e4-a5ac-00163edde41f/blockdevices/6/",
4922- "uuid": null,
4923- "tags": [
4924- "ssd",
4925- "rotary"
4926- ],
4927- "name": "sda",
4928- "partition_table_type": "MBR",
4929- "id_path": "/dev/disk/by-id/ata-QEMU_HARDDISK_QM00001",
4930- "path": "/dev/disk/by-dname/sda",
4931- "model": "QEMU HARDDISK",
4932- "block_size": 4096,
4933- "type": "physical",
4934- "id": 6,
4935- "serial": "QM00001",
4936- "partitions": [
4937- {
4938- "uuid": "e94ca09a-d83e-4521-8bac-833da2ed0b3e",
4939- "bootable": false,
4940- "filesystem": {
4941- "label": null,
4942- "mount_point": null,
4943- "uuid": "61d447c2-387d-4fb1-885a-65eeef91e92a",
4944- "fstype": "lvm-pv"
4945- },
4946- "path": "/dev/disk/by-dname/sda-part1",
4947- "resource_uri": "/MAAS/api/2.0/nodes/node-f4e2281c-d19a-11e4-a5ac-00163edde41f/blockdevices/6/partition/1",
4948- "type": "partition",
4949- "id": 1,
4950- "size": 21471690752
4951- }
4952- ]
4953- },
4954- {
4955- "resource_uri": "/MAAS/api/2.0/nodes/node-f4e2281c-d19a-11e4-a5ac-00163edde41f/blockdevices/11/",
4956- "uuid": "f58b8fb2-dcf2-4ba9-a01c-60409829a64e",
4957- "tags": [],
4958- "partitions": [],
4959- "name": "vgroot-lvroot",
4960- "partition_table_type": null,
4961- "filesystem": {
4962- "label": "root",
4963- "mount_point": "/",
4964- "uuid": "9f09e3fd-2484-4da5-bb56-a72a0c478d06",
4965- "fstype": "ext4"
4966- },
4967- "id_path": null,
4968- "path": "/dev/disk/by-dname/lvroot",
4969- "model": null,
4970- "block_size": 4096,
4971- "type": "virtual",
4972- "id": 11,
4973- "serial": null,
4974- "size": 21470642176
4975- }
4976- ]
4977-
4978-Read Block Device
4979-^^^^^^^^^^^^^^^^^
4980-
4981-If you want to read just one block device instead of listing all block devices
4982-the `read` operation on the `block-device` endpoint provides that information.
4983-::
4984-
4985- $ maas my-maas-session block-device read node-f4e2281c-d19a-11e4-a5ac-00163edde41f 12
4986- {
4987- "size": 21474836480,
4988- "resource_uri": "/MAAS/api/2.0/nodes/node-f4e2281c-d19a-11e4-a5ac-00163edde41f/blockdevices/12/",
4989- "uuid": null,
4990- "tags": [],
4991- "name": "sdb",
4992- "partition_table_type": null,
4993- "id_path": "",
4994- "path": "/dev/disk/by-dname/sdb",
4995- "model": "QEMU HARDDISK",
4996- "block_size": 4096,
4997- "type": "physical",
4998- "id": 12,
4999- "serial": "QM00001",
5000- "partitions": []
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches