Esempio n. 1
0
 def test_service_enabled_on_create_based_on_flag(self):
     self.flags(enable_new_services=True)
     host = 'foo'
     binary = 'rack-fake'
     app = service.Service.create(host=host, binary=binary)
     app.start()
     app.stop()
     ref = db.service_get(context.get_admin_context(), app.service_id)
     db.service_destroy(context.get_admin_context(), app.service_id)
     self.assertTrue(not ref['disabled'])
Esempio n. 2
0
    def setUp(self):
        super(NetworksTestCase, self).setUp()
        self.ctxt = context.get_admin_context()

        self.gid = unicode(uuid.uuid4())
        self.network_id = unicode(uuid.uuid4())
        self.neutron_network_id = unicode(uuid.uuid4())
        self.ext_router_id = unicode(uuid.uuid4())
Esempio n. 3
0
 def setUp(self):
     super(ProcessTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
     self.user_ctxt = context.RequestContext('user', 'user')
     self.gid = unicode(uuid.uuid4())
     self.group = self._create_group(self.gid)
     self.network = self._create_network(self.gid)
     self.keypair = self._create_keypair(self.gid)
     self.securitygroup = self._create_securitygroup(self.gid)
Esempio n. 4
0
    def start(self):
        verstr = version.version_string_with_package()
        LOG.audit(_('Starting %(topic)s node (version %(version)s)'),
                  {'topic': self.topic, 'version': verstr})
        self.basic_config_check()
        self.manager.init_host()
        self.model_disconnected = False
        ctxt = context.get_admin_context()
        try:
            self.service_ref = db.service_get_by_args(ctxt,
                                                      self.host,
                                                      self.binary)
            self.service_id = self.service_ref['id']
        except exception.NotFound:
            try:
                self.service_ref = self._create_service_ref(ctxt)
            except exception.ServiceTopicExists:
                self.service_ref = db.service_get_by_args(ctxt,
                                                          self.host,
                                                          self.binary)

        self.manager.pre_start_hook()

        LOG.debug(_("Join ServiceGroup membership for this service %s")
                  % self.topic)
        self.servicegroup_api.join(self.host, self.topic, self)

        if self.backdoor_port is not None:
            self.manager.backdoor_port = self.backdoor_port

        LOG.debug(_("Creating RPC server for service %s") % self.topic)

        target = messaging.Target(topic=self.topic, server=self.host)

        endpoints = [
            self.manager,
            baserpc.BaseRPCAPI(self.manager.service_name, self.backdoor_port)
        ]
        endpoints.extend(self.manager.additional_endpoints)

        serializer = rack_object.RackObjectSerializer()

        self.rpcserver = rpc.get_server(target, endpoints, serializer)
        self.rpcserver.start()

        self.manager.post_start_hook()

        if self.periodic_enable:
            if self.periodic_fuzzy_delay:
                initial_delay = random.randint(0, self.periodic_fuzzy_delay)
            else:
                initial_delay = None

            self.tg.add_dynamic_timer(
                self.periodic_tasks,
                initial_delay=initial_delay,
                periodic_interval_max=self.periodic_interval_max)
Esempio n. 5
0
File: db.py Progetto: n-nishida/rack
 def get_all(self, group_id):
     """Returns ALL members of the given group
     """
     LOG.debug(_('DB_Driver: get_all members of the %s group') % group_id)
     rs = []
     ctxt = context.get_admin_context()
     services = db.service_get_all_by_topic(ctxt, group_id)
     for service in services:
         if self.is_up(service):
             rs.append(service['host'])
     return rs
Esempio n. 6
0
 def setUp(self):
     super(MemcachedServiceGroupTestCase, self).setUp()
     servicegroup.API._driver = None
     self.flags(servicegroup_driver='mc')
     self.down_time = 15
     self.flags(enable_new_services=True)
     self.flags(service_down_time=self.down_time)
     self.servicegroup_api = servicegroup.API(test=True)
     self._host = 'foo'
     self._binary = 'rack-fake'
     self._topic = 'unittest'
     self._ctx = context.get_admin_context()
Esempio n. 7
0
File: mc.py Progetto: n-nishida/rack
    def _report_state(self, service):
        """Update the state of this service in the datastore."""
        context.get_admin_context()
        try:
            key = "%(topic)s:%(host)s" % service.service_ref
            # memcached has data expiration time capability.
            # set(..., time=CONF.service_down_time) uses it and
            # reduces key-deleting code.
            self.mc.set(str(key),
                        timeutils.utcnow(),
                        time=CONF.service_down_time)

            # TODO(termie): make this pattern be more elegant.
            if getattr(service, 'model_disconnected', False):
                service.model_disconnected = False
                LOG.error(_('Recovered model server connection!'))

        # TODO(vish): this should probably only catch connection errors
        except Exception:  # pylint: disable=W0702
            if not getattr(service, 'model_disconnected', False):
                service.model_disconnected = True
                LOG.exception(_('model server went away'))
Esempio n. 8
0
File: db.py Progetto: n-nishida/rack
    def _report_state(self, service):
        """Update the state of this service in the datastore."""
        ctxt = context.get_admin_context()
        state_catalog = {}
        try:
            report_count = service.service_ref['report_count'] + 1
            state_catalog['report_count'] = report_count

            service.service_ref = db.service_update(ctxt,
                                                    service.service_ref['id'],
                                                    state_catalog)

            if getattr(service, 'model_disconnected', False):
                service.model_disconnected = False
                LOG.error(_('Recovered model server connection!'))

        except Exception:
            if not getattr(service, 'model_disconnected', False):
                service.model_disconnected = True
                LOG.exception(_('model server went away'))
Esempio n. 9
0
 def setUp(self):
     super(SecuritygroupTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
     self.user_ctxt = context.RequestContext('user', 'user')
Esempio n. 10
0
 def setUp(self):
     super(GroupTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
     self.user_ctxt = context.RequestContext('user', 'user')
     self.gid = unicode(uuid.uuid4())
Esempio n. 11
0
 def setUp(self):
     super(KeypairTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
     self.user_ctxt = context.RequestContext('user', 'user')
Esempio n. 12
0
 def setUp(self):
     super(ServiceTestCase, self).setUp()
     self.ctxt = context.get_admin_context()
Esempio n. 13
0
 def periodic_tasks(self, raise_on_error=False):
     """Tasks to be run at a periodic interval."""
     ctxt = context.get_admin_context()
     return self.manager.periodic_tasks(ctxt, raise_on_error=raise_on_error)