def test_create_notifications(self): self.patch(deprecations, "get_deprecations").return_value = [ Deprecation(id="MD123", since="2.9", description="something is deprecated") ] sync_deprecation_notifications() notification1, notification2 = Notification.objects.order_by("ident") self.assertEqual(notification1.ident, "deprecation_MD123_admins") self.assertEqual(notification1.category, "warning") self.assertFalse(notification1.dismissable) self.assertTrue(notification1.admins) self.assertFalse(notification1.users) self.assertIn("https://maas.io/deprecations/MD123", notification1.message) self.assertNotIn("Please contact your MAAS administrator.", notification1.message) self.assertEqual(notification2.ident, "deprecation_MD123_users") self.assertEqual(notification2.category, "warning") self.assertFalse(notification2.dismissable) self.assertFalse(notification2.admins) self.assertTrue(notification2.users) self.assertIn("Please contact your MAAS administrator.", notification2.message)
def test_remove_deprecations(self): Notification( ident="deprecation_MD1_admins", message="some text" ).save() sync_deprecation_notifications() # the notification is removed since there is no active deprecation self.assertFalse(Notification.objects.exists())
def test_create_notifications(self): self.useFixture(EnvironmentVariable("SNAP", "/snap/maas/current")) snap_common_path = Path(self.make_dir()) self.useFixture( EnvironmentVariable("SNAP_COMMON", str(snap_common_path)) ) snap_common_path.joinpath("snap_mode").write_text("all", "utf-8") sync_deprecation_notifications() notification1, notification2 = Notification.objects.order_by("ident") self.assertEqual(notification1.ident, "deprecation_MD1_admins") self.assertEqual(notification1.category, "warning") self.assertFalse(notification1.dismissable) self.assertTrue(notification1.admins) self.assertFalse(notification1.users) self.assertIn( "https://maas.io/deprecations/MD1", notification1.message ) self.assertNotIn( "Please contact your MAAS administrator.", notification1.message ) self.assertEqual(notification2.ident, "deprecation_MD1_users") self.assertEqual(notification2.category, "warning") self.assertFalse(notification2.dismissable) self.assertFalse(notification2.admins) self.assertTrue(notification2.users) self.assertIn( "Please contact your MAAS administrator.", notification2.message )
def inner_start_up(master=False): """Startup jobs that must run serialized w.r.t. other starting servers.""" # Register our MAC data type with psycopg. register_mac_type(connection.cursor()) # All commissioning and testing scripts are stored in the database. For # a commissioning ScriptSet to be created Scripts must exist first. Call # this early, only on the master process, to ensure they exist and are # only created once. If get_or_create_running_controller() is called before # this it will fail on first run. if master: load_builtin_scripts() # Ensure the this region is represented in the database. The first regiond # to pass through inner_start_up on this host can do this; it should NOT # be restricted to masters only. This also ensures that the MAAS ID is set # on the filesystem; it will be done in a post-commit hook and will thus # happen before `locks.startup` is released. node = RegionController.objects.get_or_create_running_controller() # Update region version ControllerInfo.objects.set_version(node, get_running_version()) # Ensure that uuid is created after creating RegionController.objects.get_or_create_uuid() # Only perform the following if the master process for the # region controller. if master: # Freshen the kms SRV records. dns_kms_setting_changed() # Make sure the commissioning distro series is still a supported LTS. commissioning_distro_series = Config.objects.get_config( name="commissioning_distro_series" ) ubuntu = UbuntuOS() if commissioning_distro_series not in ( ubuntu.get_supported_commissioning_releases() ): Config.objects.set_config( "commissioning_distro_series", ubuntu.get_default_commissioning_release(), ) Notification.objects.create_info_for_admins( "Ubuntu %s is no longer a supported commissioning " "series. Ubuntu %s has been automatically selected." % ( commissioning_distro_series, ubuntu.get_default_commissioning_release(), ), ident="commissioning_release_deprecated", ) with RegionConfiguration.open() as config: Config.objects.set_config("maas_url", config.maas_url) # Update deprecation notifications if needed sync_deprecation_notifications()
def inner_start_up(master=False): """Startup jobs that must run serialized w.r.t. other starting servers.""" # Register our MAC data type with psycopg. register_mac_type(connection.cursor()) # Ensure the this region is represented in the database. The first regiond # to pass through inner_start_up on this host can do this; it should NOT # be restricted to masters only. This also ensures that the MAAS ID is set # on the filesystem; it will be done in a post-commit hook and will thus # happen before `locks.startup` is released. region = RegionController.objects.get_or_create_running_controller() # Ensure that uuid is created after creating RegionController.objects.get_or_create_uuid() # Only perform the following if the master process for the # region controller. if master: # Freshen the kms SRV records. dns_kms_setting_changed() # Add or update all builtin scripts load_builtin_scripts() # Make sure the commissioning distro series is still a supported LTS. commissioning_distro_series = Config.objects.get_config( name="commissioning_distro_series") ubuntu = UbuntuOS() if commissioning_distro_series not in ( ubuntu.get_supported_commissioning_releases()): Config.objects.set_config( "commissioning_distro_series", ubuntu.get_default_commissioning_release(), ) Notification.objects.create_info_for_admins( "Ubuntu %s is no longer a supported commissioning " "series. Ubuntu %s has been automatically selected." % ( commissioning_distro_series, ubuntu.get_default_commissioning_release(), ), ident="commissioning_release_deprecated", ) # Update deprecation notifications if needed sync_deprecation_notifications() # Refresh soon after this transaction is in. post_commit_do(reactor.callLater, 0, refreshRegion, region) # Create a certificate for the region. post_commit_do(reactor.callLater, 0, generate_certificate_if_needed)