示例#1
0
            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()
示例#2
0
        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()
示例#3
0
        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()
示例#4
0
        # 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()
示例#5
0
            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()