shutil.rmtree(u'/var/lib/mysql/', ignore_errors=True) shutil.rmtree(u'/var/log/mysql/', ignore_errors=True) shutil.rmtree(self.local_config.site_directory, ignore_errors=True) self.local_config.reset() def hook_start(self): if not self.storage_is_mounted: self.remark(u'Do not start web user interface : No shared storage') elif not self.local_config.api_url: self.remark(u'Do not start web user interface : No orchestrator api') else: self.start_paya() # Start paya monitoring (if paya_config_string set in config.yaml) self.cmd(u'service mysql start') self.cmd(u'service apache2 start') self.remark(u'Web user interface successfully started') def hook_stop(self): self.cmd(u'service apache2 stop', fail=False) self.cmd(u'service mysql stop', fail=False) # Main ----------------------------------------------------------------------------------------------------------------- if __name__ == u'__main__': from pytoolbox.encoding import configure_unicode configure_unicode() webui_hooks = abspath(join(dirname(__file__), u'../../charms/oscied-webui')) WebuiHooks(first_that_exist(METADATA_FILENAME, join(webui_hooks, METADATA_FILENAME)), first_that_exist(CONFIG_FILENAME, join(webui_hooks, CONFIG_FILENAME)), first_that_exist(LOCAL_CONFIG_FILENAME, join(webui_hooks, LOCAL_CONFIG_FILENAME)), DEFAULT_OS_ENV).trigger()
if self.config.cleanup: self.cmd(u'apt-get -y remove --purge {0}'.format(u' '.join(TransformHooks.PACKAGES))) self.cmd(u'apt-get -y autoremove') self.local_config.reset() def hook_start(self): if not self.storage_is_mounted: self.remark(u'Do not start transform daemon : No shared storage') elif not exists(self.local_config.celery_config_file): self.remark(u'Do not start transform daemon : No celery configuration file') elif len(self.rabbit_queues) == 0: self.remark(u'Do not start transform daemon : No RabbitMQ queues declared') else: self.save_local_config() # Update local configuration file for transform daemon self.start_paya() # Start paya monitoring (if paya_config_string set in config.yaml) self.start_celery_worker() def hook_stop(self): self.stop_celery_worker() # Main ----------------------------------------------------------------------------------------------------------------- if __name__ == u'__main__': from pytoolbox.encoding import configure_unicode configure_unicode() transform_hooks = abspath(join(dirname(__file__), u'../../charms/oscied-transform')) TransformHooks(first_that_exist(METADATA_FILENAME, join(transform_hooks, METADATA_FILENAME)), first_that_exist(CONFIG_FILENAME, join(transform_hooks, CONFIG_FILENAME)), first_that_exist(LOCAL_CONFIG_FILENAME, join(transform_hooks, LOCAL_CONFIG_FILENAME)), DEFAULT_OS_ENV).trigger()
self.local_config.reset() self.local_config.update_publish_uri(self.public_address) def hook_start(self): if not self.storage_is_mounted: self.remark(u'Do not start publisher daemon : No shared storage') elif not exists(self.local_config.celery_config_file): self.remark(u'Do not start publisher daemon : No celery configuration file') elif len(self.rabbit_queues) == 0: self.remark(u'Do not start publisher daemon : No RabbitMQ queues declared') else: self.save_local_config() # Update local configuration file for publisher daemon self.start_paya() # Start paya monitoring (if paya_config_string set in config.yaml) self.cmd(u'service apache2 start') self.start_celery_worker() def hook_stop(self): self.stop_celery_worker() self.cmd(u'service apache2 stop', fail=False) # Main ----------------------------------------------------------------------------------------------------------------- if __name__ == u'__main__': from pytoolbox.encoding import configure_unicode configure_unicode() publisher_path = abspath(join(dirname(__file__), u'../../charms/oscied-publisher')) PublisherHooks(first_that_exist(METADATA_FILENAME, join(publisher_path, METADATA_FILENAME)), first_that_exist(CONFIG_FILENAME, join(publisher_path, CONFIG_FILENAME)), first_that_exist(LOCAL_CONFIG_FILENAME, join(publisher_path, LOCAL_CONFIG_FILENAME)), DEFAULT_OS_ENV).trigger()
# Get configuration from the relation publisher_address = socket.getfqdn(self.relation_get(u'private-address')) self.info(u'Publisher address is {0}'.format(publisher_address)) if not publisher_address: self.remark(u'Waiting for complete setup') return # FIXME something to do (register unit ?) def hook_transform_relation_joined(self): self.relation_set(mongo_connection=self.mongo_node_connection, rabbit_connection=self.rabbit_connection) def hook_transform_relation_changed(self): # Get configuration from the relation transform_address = socket.getfqdn(self.relation_get(u'private-address')) self.info(u'Transform address is {0}'.format(transform_address)) if not transform_address: self.remark(u'Waiting for complete setup') return # FIXME something to do (register unit ?) # Main ----------------------------------------------------------------------------------------------------------------- if __name__ == u'__main__': from pytoolbox.encoding import configure_unicode configure_unicode() orchestra_path = abspath(join(dirname(__file__), u'../../charms/oscied-orchestra')) OrchestraHooks(first_that_exist(METADATA_FILENAME, join(orchestra_path, METADATA_FILENAME)), first_that_exist(CONFIG_FILENAME, join(orchestra_path, CONFIG_FILENAME)), first_that_exist(LOCAL_CONFIG_FILENAME, join(orchestra_path, LOCAL_CONFIG_FILENAME)), DEFAULT_OS_ENV).trigger()
self.remark(u'Waiting for complete setup') return # FIXME close previously opened ports if some bricks leaved ... self.info(u'Open required ports') port, bricks = 24010, [self.brick()] for peer in self.relation_list(): self.open_port(port, u'TCP') # Open required bricks.append(self.brick(socket.getfqdn(self.relation_get(u'private-address', peer)))) port += 1 if self.is_leader: self.info(u'As leader, probe remote peer {0} and create or expand volume {1}'.format( peer_address, self.volume)) self.peer_probe(peer_address) self.volume_create_or_expand(bricks=bricks) def hook_peer_relation_departed(self): self.remark(u'FIXME NOT IMPLEMENTED') # Main ----------------------------------------------------------------------------------------------------------------- if __name__ == u'__main__': from pytoolbox.encoding import configure_unicode configure_unicode() storage_hooks = abspath(join(dirname(__file__), u'../../charms/oscied-storage')) StorageHooks(first_that_exist(METADATA_FILENAME, join(storage_hooks, METADATA_FILENAME)), first_that_exist(CONFIG_FILENAME, join(storage_hooks, CONFIG_FILENAME)), first_that_exist(LOCAL_CONFIG_FILENAME, join(storage_hooks, LOCAL_CONFIG_FILENAME)), DEFAULT_OS_ENV).trigger()