summaryrefslogtreecommitdiffstats
path: root/vio/vio/pub/vim/drivers/vimsdk/compute.py
blob: e4155733aba3e140ff61d9ea91d0f5cea49a3361 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Copyright (c) 2017-2018 VMware, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

import logging

from openstack import resource2 as resource
from openstack.compute import compute_service

from vio.pub.vim.drivers import base
from vio.pub.vim.drivers.vimsdk import sdk

LOG = logging.getLogger(__name__)


class FlavorExtraSpecs(resource.Resource):
    resources_key = 'os-extra_specs'
    base_path = '/flavors/%(flavor_id)s/os-extra_specs'
    service = compute_service.ComputeService()

    #: The ID for the flavor.
    flavor_id = resource.URI('flavor_id')

    # capabilities
    allow_create = True
    allow_get = True
    allow_delete = True
    allow_list = True

    extra_specs = resource.Body('extra_specs')


class ComputeClient(base.DriverBase):
    """Compute driver."""

    def __init__(self, params):
        super(ComputeClient, self).__init__(params)
        self.conn = sdk.create_connection(params)
        self.session = self.conn.session

    @sdk.translate_exception
    def create_server(self, **kwargs):
        server = self.conn.compute.create_server(**kwargs)
        return server

    @sdk.translate_exception
    def list_servers(self, **query):
        servers = self.conn.compute.servers(**query)
        return servers

    @sdk.translate_exception
    def get_server(self, server_id, **query):
        server = self.conn.compute.get_server(server=server_id)
        return server

    @sdk.translate_exception
    def find_server(self, server_id, ignore_missing=False):
        server = self.conn.compute.find_server(
            server_id, ignore_missing=ignore_missing)
        return server

    @sdk.translate_exception
    def delete_server(self, server_id, **query):
        self.conn.compute.delete_server(server=server_id)

    @sdk.translate_exception
    def list_server_interfaces(self, server_id):
        ifaces = self.conn.compute.server_interfaces(server_id)
        return list(ifaces)

    @sdk.translate_exception
    def start_server(self, server_id):
        self.conn.compute.start_server(server=server_id)

    @sdk.translate_exception
    def stop_server(self, server_id):
        self.conn.compute.stop_server(server=server_id)

    @sdk.translate_exception
    def reboot_server(self, server_id, reboot_type):
        self.conn.compute.reboot_server(server=server_id,
                                        reboot_type=reboot_type)

    @sdk.translate_exception
    def list_flavors(self, **query):
        flavors = self.conn.compute.flavors(**query)
        return flavors

    @sdk.translate_exception
    def create_flavor(self, **kwargs):
        return self.conn.compute.create_flavor(**kwargs)

    @sdk.translate_exception
    def get_flavor(self, flavor_id, **query):
        return self.conn.compute.get_flavor(flavor=flavor_id)

    @sdk.translate_exception
    def find_flavor(self, flavor_id, ignore_missing=False):
        return self.conn.compute.find_flavor(
            flavor_id, ignore_missing=ignore_missing)

    @sdk.translate_exception
    def delete_flavor(self, flavor_id, **query):
        self.conn.compute.delete_flavor(flavor=flavor_id)

    @sdk.translate_exception
    def get_flavor_extra_specs(self, flavor_id, **query):
        return self.conn.compute._get(FlavorExtraSpecs, flavor_id=flavor_id,
                                      requires_id=False)

    @sdk.translate_exception
    def create_flavor_extra_specs(self, flavor_id, extra_specs, **query):
        return self.conn.compute._create(FlavorExtraSpecs,
                                         flavor_id=flavor_id,
                                         extra_specs=extra_specs)

    @sdk.translate_exception
    def find_image(self, image_id, ignore_missing=False):
        return self.conn.compute.find_image(
            image_id, ignore_missing=ignore_missing)

    @sdk.translate_exception
    def get_limits(self, **kwargs):
        return self.conn.compute.get_limits()

    @sdk.translate_exception
    def list_services(self, **kwargs):
        return self.conn.compute.services()

    @sdk.translate_exception
    def get_hypervisor(self, hypervisor, **query):
        return self.conn.compute.get_hypervisor(hypervisor=hypervisor, **query)

    @sdk.translate_exception
    def list_hypervisors(self, **query):
        return self.conn.compute.hypervisors(**query)