def prepare(self, context, databases, memory_mb, users, device_path=None, mount_point=None, backup_id=None): """Makes ready DBAAS on a Guest container.""" MySqlAppStatus.get().begin_mysql_install() # status end_mysql_install set with secure() app = MySqlApp(MySqlAppStatus.get()) restart_mysql = False if device_path: device = volume.VolumeDevice(device_path) device.format() #if a /var/lib/mysql folder exists, back it up. if os.path.exists(CONF.mount_point): #stop and do not update database app.stop_db() #rsync exiting data if not backup_id: restart_mysql = True device.migrate_data(CONF.mount_point) #mount the volume device.mount(mount_point) LOG.debug(_("Mounted the volume.")) #check mysql was installed and stopped if restart_mysql: app.start_mysql() app.install_if_needed() if backup_id: self._perform_restore(backup_id, context, CONF.mount_point, app) LOG.info(_("Securing mysql now.")) app.secure(memory_mb) if backup_id and MySqlAdmin().is_root_enabled(): MySqlAdmin().report_root_enabled(context) else: app.secure_root() app.complete_install_or_restart() if databases: self.create_database(context, databases) if users: self.create_user(context, users) LOG.info('"prepare" call has finished.')
def prepare(self, context, databases, memory_mb, users, device_path=None, mount_point=None, backup_id=None): """Makes ready DBAAS on a Guest container.""" MySqlAppStatus.get().begin_mysql_install() # status end_mysql_install set with secure() app = MySqlApp(MySqlAppStatus.get()) restart_mysql = False if device_path: device = volume.VolumeDevice(device_path) device.format() #if a /var/lib/mysql folder exists, back it up. if os.path.exists(CONF.mount_point): #stop and do not update database app.stop_db() #rsync exiting data if not backup_id: restart_mysql = True device.migrate_data(CONF.mount_point) #mount the volume device.mount(mount_point) LOG.debug(_("Mounted the volume.")) #check mysql was installed and stopped if restart_mysql: app.start_mysql() app.install_if_needed() if backup_id: self._perform_restore(backup_id, context, CONF.mount_point) LOG.info(_("Securing mysql now.")) app.secure(memory_mb) if backup_id and MySqlAdmin().is_root_enabled(): MySqlAdmin().report_root_enabled(context) else: app.secure_root() app.complete_install_or_restart() if databases: self.create_database(context, databases) if users: self.create_user(context, users) LOG.info('"prepare" call has finished.')
def test_secure_keep_root(self): mock_conn = mock_sql_connection() when(mock_conn).execute(any()).thenReturn(None) when(utils).execute_with_timeout("sudo", any(str), "stop").thenReturn( None) when(pkg).pkg_install("dbaas-mycnf", any()).thenReturn(None) # skip writing the file for now when(os.path).isfile(any()).thenReturn(False) when(utils).execute_with_timeout( "sudo", "chmod", any(), any()).thenReturn(None) MySqlAppMockTest.stub_file("/etc/mysql/my.cnf") MySqlAppMockTest.stub_file("/etc/dbaas/my.cnf/my.cnf.2048M") MySqlAppMockTest.stub_file("/tmp/my.cnf.tmp") mock_status = mock(MySqlAppStatus) when(mock_status).wait_for_real_status_to_change_to( any(), any(), any()).thenReturn(True) app = MySqlApp(mock_status) app.secure(2048) verify(mock_conn, never).execute(TextClauseMatcher('root'))
def test_secure_keep_root(self): mock_conn = mock_sql_connection() when(mock_conn).execute(any()).thenReturn(None) when(utils).execute_with_timeout("sudo", any(str), "stop").thenReturn(None) when(pkg).pkg_install("dbaas-mycnf", any()).thenReturn(None) # skip writing the file for now when(os.path).isfile(any()).thenReturn(False) when(utils).execute_with_timeout("sudo", "chmod", any(), any()).thenReturn(None) MySqlAppMockTest.stub_file("/etc/mysql/my.cnf") MySqlAppMockTest.stub_file("/etc/dbaas/my.cnf/my.cnf.2048M") MySqlAppMockTest.stub_file("/tmp/my.cnf.tmp") mock_status = mock(MySqlAppStatus) when(mock_status).wait_for_real_status_to_change_to( any(), any(), any()).thenReturn(True) app = MySqlApp(mock_status) app.secure(2048) verify(mock_conn, never).execute(TextClauseMatcher('root'))