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)
def _power_off_for_hybrid_vm(self, instance, timeout=0, retry_interval=0): project_id = CONF.hws.project_id 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) try: wormhole_business_hws.get_version() except Exception, e: LOG.debug('hyper service is not online, stop base vm directlly.') LOG.debug('start to stop server') stop_result = self.hws_client.ecs.stop_server(project_id, provider_server_id) self._deal_java_error(stop_result) self._wait_for_hws_server_in_SHUTOFF(provider_server_id) LOG.debug('start to stop container') stop_result = wormhole_business_hws.stop_container() time.sleep(0.5) LOG.debug('start to stop server') stop_result = self.hws_client.ecs.stop_server(project_id, provider_server_id) self._deal_java_error(stop_result) self._wait_for_hws_server_in_SHUTOFF(provider_server_id) LOG.info('Stop Server: %s' % instance.display_name)
def _create_hyper_service_container(self, context, instance, provider_server, network_info, block_device_info, image_name, injected_files, image_meta, admin_password): LOG.debug('instance: %s' % instance) LOG.debug('provider_server: %s' % provider_server) LOG.debug('network_info: %s' % network_info) LOG.debug('block_device_info: %s' % block_device_info) LOG.debug('image_name: %s' % image_name) LOG.debug('injected_files: %s' % injected_files) instance.metadata['is_hybrid_vm'] = True instance.save() # update port bind host LOG.debug('Start to binding host') self._binding_host(context, network_info, instance.uuid) port = CONF.hws.hybrid_service_port wormhole_business_hws = WormHoleBusinessHWS(provider_server, self.hws_client, port) LOG.debug('start to get version') try: docker_version = wormhole_business_hws.get_version() except Exception, e: error_info = 'docker server is not up, create docker app failed, exception: %s' %\ traceback.format_exc(e) raise Exception(error_info)
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))