Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dmapi / usr / lib / python2.7 / dist-packages / dmapi / api / openstack / dm / servers.py
Size: Mime:
# Copyright 2018 TrilioData Inc.
# All Rights Reserved.

import copy

from oslo_log import log as logging
import oslo_messaging as messaging
from oslo_utils import strutils
from oslo_utils import timeutils
from oslo_utils import uuidutils
import six
import webob
from webob import exc

from dmapi.api.openstack import api_version_request
from dmapi.api.openstack import common
from dmapi.api.openstack.dm.schemas import servers as schema_servers
from dmapi.api.openstack import wsgi
from dmapi.api import validation
import dmapi.conf
from dmapi import context as dmapi_context
from dmapi import exception
from dmapi.policies import servers as server_policies
from dmapi import utils

TAG_SEARCH_FILTERS = ('tags', 'tags-any', 'not-tags', 'not-tags-any')
DEVICE_TAGGING_MIN_COMPUTE_VERSION = 14

CONF = dmapi.conf.CONF

LOG = logging.getLogger(__name__)


class ServersController(wsgi.Controller):
    """The Server API base controller class for the DM API."""

    def __init__(self, **kwargs):

        super(ServersController, self).__init__(**kwargs)
        self.dm_api = None

    @wsgi.response(202)
    @wsgi.expected_errors((404, 409))
    @wsgi.action('reboot')
    @validation.schema(schema_servers.reboot)
    def _action_reboot(self, req, id, body):

        reboot_type = body['reboot']['type'].upper()
        context = req.environ['dmapi.context']
        context.can(server_policies.SERVERS % 'reboot')
        instance = self._get_server(context, req, id)

        try:
            self.dm_api.reboot(context, instance, reboot_type)
        except exception.InstanceIsLocked as e:
            raise exc.HTTPConflict(explanation=e.format_message())
        except exception.InstanceInvalidState as state_error:
            common.raise_http_conflict_for_instance_invalid_state(state_error,
                    'reboot', id)