'Start serving this service using loaded configuration.
Also, retrieve updated port number in case \'0\' was passed in, which
indicates a random port should be used.
:returns: None'

def start(self):

    ctxt = context.get_admin_context()
    service_ref = objects.Service.get_by_host_and_binary(ctxt, self.host, self.binary)
    if service_ref:
        _update_service_ref(service_ref)
    else:
        try:
            service_ref = _create_service_ref(self, ctxt)
        except (exception.ServiceTopicExists, exception.ServiceBinaryExists):
            service_ref = objects.Service.get_by_host_and_binary(ctxt, self.host, self.binary)
    if self.manager:
        self.manager.init_host()
        self.manager.pre_start_hook()
        if (self.backdoor_port is not None):
            self.manager.backdoor_port = self.backdoor_port
    self.server.start()
    if self.manager:
        self.manager.post_start_hook()
