def checkEnvironmentAndCreateStructure(self): """Checks for software_root and instance_root existence, then creates needed files and directories. """ # Checks for software_root and instance_root existence if not os.path.isdir(self.software_root): raise OSError('%s does not exist.' % self.software_root) if not os.path.isdir(self.instance_root): raise OSError('%s does not exist.' % self.instance_root) # Creates everything needed # Creates instance_root structure createPrivateDirectory(os.path.join(self.instance_root, 'var')) createPrivateDirectory(os.path.join(self.instance_root, 'var', 'log')) createPrivateDirectory(os.path.join(self.instance_root, 'var', 'run')) createPrivateDirectory(os.path.join(self.instance_root, 'etc')) createPrivateDirectory(self.supervisord_configuration_directory) # Creates supervisord configuration updateFile(self.supervisord_configuration_path, pkg_resources.resource_stream(__name__, 'templates/supervisord.conf.in').read() % { 'supervisord_configuration_directory': self.supervisord_configuration_directory, 'supervisord_socket': os.path.abspath(self.supervisord_socket), 'supervisord_loglevel': 'info', 'supervisord_logfile': os.path.abspath(os.path.join(self.instance_root, 'var', 'log', 'supervisord.log')), 'supervisord_logfile_maxbytes': '50MB', 'supervisord_nodaemon': 'false', 'supervisord_pidfile': os.path.abspath(os.path.join(self.instance_root, 'var', 'run', 'supervisord.pid')), 'supervisord_logfile_backups': '10', 'watchdog_command': self.getWatchdogLine(), } )
def do_configure(args, fetch_config_func, logger): """ Generate configuration files, Create the instance path by running slapformat (but will crash), Add proxy to supervisor, Run supervisor, which will run the proxy, Run format, which will finish correctly. """ slapos_node_config_path = os.path.join( args.slapos_configuration_directory, 'slapos.cfg') if os.path.exists(slapos_node_config_path): logger.error('A SlapOS configuration directory already exist at' ' %s. Aborting.' % slapos_node_config_path) raise SystemExit(1) if not getattr(args, 'cfg', None): args.cfg = slapos_node_config_path _createConfigurationDirectory(args.slapos_configuration_directory) _generateSlaposNodeConfigurationFile(slapos_node_config_path, args) configp = fetch_config_func(args) conf = FormatConfig(logger=logger) conf.mergeConfig(args, configp) # The First thing we have to do here is to generate slapproxy conf # for supervisord, then supervisord certainly start slapproxy. proxy_configuration_file = _generateSlaposProxyConfigurationFile(conf) conf.proxy_configuration_file = proxy_configuration_file _addProxyToSupervisor(conf) # Do the rest slapgrid = create_slapgrid_object(conf.__dict__, logger) createPrivateDirectory(os.path.join(conf.slapos_buildout_directory, 'log')) _runFormat(conf.slapos_buildout_directory) slapgrid.checkEnvironmentAndCreateStructure() home_folder_path = os.environ['HOME'] createPrivateDirectory("%s/.slapos" % home_folder_path) slapos_client_cfg_path = '%s/.slapos/slapos-client.cfg' % home_folder_path if not os.path.exists(slapos_client_cfg_path): os.symlink(slapos_node_config_path, slapos_client_cfg_path) launchSupervisord(instance_root=conf.instance_root, logger=logger) _runFormat(conf.slapos_buildout_directory) return 0
def createSupervisordConfiguration(instance_root, watchdog_command=''): """ Create supervisord related files and directories. """ if not os.path.isdir(instance_root): raise OSError('%s does not exist.' % instance_root) supervisord_configuration_file_path = _getSupervisordConfigurationFilePath(instance_root) supervisord_configuration_directory = _getSupervisordConfigurationDirectory(instance_root) supervisord_socket = _getSupervisordSocketPath(instance_root) # Create directory accessible for the instances. var_directory = os.path.join(instance_root, 'var') if not os.path.isdir(var_directory): os.mkdir(var_directory) os.chmod(var_directory, stat.S_IRWXU | stat.S_IROTH | stat.S_IXOTH | \ stat.S_IRGRP | stat.S_IXGRP ) etc_directory = os.path.join(instance_root, 'etc') if not os.path.isdir(etc_directory): os.mkdir(etc_directory) # Creates instance_root structure createPrivateDirectory(os.path.join(instance_root, 'var', 'log')) createPrivateDirectory(os.path.join(instance_root, 'var', 'run')) createPrivateDirectory(os.path.join(instance_root, 'etc')) createPrivateDirectory(supervisord_configuration_directory) # Creates supervisord configuration updateFile(supervisord_configuration_file_path, bytes2str(pkg_resources.resource_string(__name__, 'templates/supervisord.conf.in')) % { 'supervisord_configuration_directory': supervisord_configuration_directory, 'supervisord_socket': os.path.abspath(supervisord_socket), 'supervisord_loglevel': 'info', 'supervisord_logfile': os.path.abspath( os.path.join(instance_root, 'var', 'log', 'supervisord.log')), 'supervisord_logfile_maxbytes': '50MB', 'supervisord_nodaemon': 'false', 'supervisord_pidfile': os.path.abspath( os.path.join(instance_root, 'var', 'run', 'supervisord.pid')), 'supervisord_logfile_backups': '10', # Do not set minfds. select() does not support file descriptors # greater than 1023. # 'supervisord_minfds': '4096', 'watchdog_command': watchdog_command, } )