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
|
# Copyright (c) 2017 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 exceptions
from vio.pub.vim.vimapi.nova.OperateNova import OperateNova
logger = logging.getLogger(__name__)
class OperateFlavors(OperateNova):
def __init__(self, **kwargs):
super(OperateFlavors, self).__init__(**kwargs)
def create_flavor(self, data, project_id, create_req):
req = {
"name": create_req.get('name'),
"vcpus": create_req.get('vcpu'),
"ram": create_req.get('memory'),
"disk": create_req.get('disk'),
"ephemeral": create_req.get('ephemeral', 0),
"swap": create_req.get('swap', 0),
"is_public": create_req.get('isPublic', True)
}
flavor = self.request('create_flavor', data,
project_id=project_id, **req)
extra_specs_spec = {l['keyName']: l['value']
for l in create_req.get('extraSpecs', [])}
extra_specs = None
if extra_specs_spec:
extra_specs = self.request('create_flavor_extra_specs', data,
project_id=project_id,
flavor_id=flavor.id,
extra_specs=extra_specs_spec)
return flavor, extra_specs
def list_flavors(self, data, project_id, **query):
flavors = self.request('list_flavors', data, project_id=project_id, **query)
flavors = list(flavors)
result = []
for flavor in flavors:
extra_specs = self.request('get_flavor_extra_specs', data,
project_id=project_id, flavor_id=flavor.id)
result.append((flavor, extra_specs))
return result
def get_flavor(self, data, project_id, flavor_id):
try:
flavor = self.request('get_flavor', data,
project_id=project_id, flavor_id=flavor_id)
extra_specs = self.request('get_flavor_extra_specs', data,
project_id=project_id, flavor_id=flavor_id)
return flavor, extra_specs
except exceptions.ResourceNotFound:
return None, None
def find_flavor(self, data, project_id, flavor_id):
param = {'username': data['username'],
'user_domain_name': 'default',
'project_domain_name': 'default',
'password': data['password'],
'auth_url': data['url'],
'project_id': project_id}
cc = self.compute(param)
flavor = cc.find_flavor(flavor_id, ignore_missing=True)
return flavor
def delete_flavor(self, data, project_id, flavor_id):
return self.request('delete_flavor', data, project_id=project_id,
flavor_id=flavor_id)
|