Example #1
0
 def _reboot_for_hybridvm(self, context, instance, network_info, reboot_type,
            block_device_info=None, bad_volumes_callback=None):
     provider_server_id = self._get_cascaded_server_id(instance)
     if provider_server_id:
         provider_server = self.hws_client.ecs.get_detail(self.project, provider_server_id)
         if self._is_hws_server_exist(provider_server):
             port = CONF.hws.hybrid_service_port
             wormhole_business_hws = WormHoleBusinessHWS(provider_server, self.hws_client, port)
             if self._is_hws_server_active(provider_server):
                 # if hws server is active, only need to restart container, no need to restart base vm.
                 docker_version = wormhole_business_hws.get_version()
                 wormhole_business_hws.restart_container(network_info, block_device_info)
             elif self._is_hws_server_shutoff(provider_server):
                 # if hws server is SHUTOFF, we need to start base vm, and start container.
                 LOG.debug('start to start server')
                 start_result = self.hws_client.ecs.start_server(self.project, provider_server_id)
                 self._deal_java_error(start_result)
                 self._wait_for_hws_server_in_ACTIVE(provider_server_id)
                 LOG.debug('start to start container')
                 start_result = wormhole_business_hws.start_container(network_info, block_device_info)
             else:
                 LOG.debug('hws server status is: %s, not support to reboot.' % provider_server['body']['server']['status'])
         else:
             LOG.debug('provider server is not exist for server id: %s' % provider_server_id)
     else:
         LOG.debug('No provider server mapped with instance: %s' % instance.uuid)
Example #2
0
    def _power_on_for_bybrid_vm(self, context, instance, network_info, block_device_info):
        LOG.debug('start to _power_on_for_bybrid_vm')
        provider_server_id = self._get_cascaded_server_id(instance)
        provider_server = self.hws_client.ecs.get_detail(self.project, provider_server_id)

        if provider_server_id and self._is_hws_server_exist(provider_server):
            port = CONF.hws.hybrid_service_port
            wormhole_business_hws = WormHoleBusinessHWS(provider_server, self.hws_client, port)
            LOG.debug('start to start server')
            start_result = self.hws_client.ecs.start_server(self.project, provider_server_id)
            self._deal_java_error(start_result)
            self._wait_for_hws_server_in_ACTIVE(provider_server_id)

            LOG.debug('start to start container')
            try:
                docker_version = wormhole_business_hws.get_version()
            except Exception, e:
                LOG.error('hyper service is not online, no need to start container')
                docker_version = None

            if docker_version:
                start_result = wormhole_business_hws.start_container(network_info, block_device_info)

            LOG.info('Start Server: %s, result is: %s' % (instance.display_name, start_result))