blob: ca1770bcf1c7ac1adc6c5c1811d189c92335fee0 [file] [log] [blame]
chris fattarsi5098fa22012-04-17 13:27:00 -07001from tempest.common.rest_client import RestClient
Daryl Walleck1465d612011-11-02 02:22:15 -05002import json
Daryl Walleck1465d612011-11-02 02:22:15 -05003
4
Tiago Melloeda03b52012-08-22 23:47:29 -03005class FlavorsClientJSON(RestClient):
Daryl Walleck1465d612011-11-02 02:22:15 -05006
Daryl Walleck587385b2012-03-03 13:00:26 -06007 def __init__(self, config, username, password, auth_url, tenant_name=None):
Tiago Melloeda03b52012-08-22 23:47:29 -03008 super(FlavorsClientJSON, self).__init__(config, username, password,
9 auth_url, tenant_name)
chris fattarsi5098fa22012-04-17 13:27:00 -070010 self.service = self.config.compute.catalog_type
Daryl Walleck1465d612011-11-02 02:22:15 -050011
12 def list_flavors(self, params=None):
13 url = 'flavors'
Zhongyue Luoe471d6e2012-09-17 17:02:43 +080014 if params is not None:
Daryl Walleck1465d612011-11-02 02:22:15 -050015 param_list = []
16 for param, value in params.iteritems():
17 param_list.append("%s=%s&" % (param, value))
18
19 url = "flavors?" + "".join(param_list)
20
chris fattarsi5098fa22012-04-17 13:27:00 -070021 resp, body = self.get(url)
Daryl Walleck1465d612011-11-02 02:22:15 -050022 body = json.loads(body)
Daryl Walleck74d04092012-01-10 23:33:46 -060023 return resp, body['flavors']
Daryl Walleck1465d612011-11-02 02:22:15 -050024
25 def list_flavors_with_detail(self, params=None):
26 url = 'flavors/detail'
Zhongyue Luoe471d6e2012-09-17 17:02:43 +080027 if params is not None:
Daryl Walleck1465d612011-11-02 02:22:15 -050028 param_list = []
29 for param, value in params.iteritems():
30 param_list.append("%s=%s&" % (param, value))
31
32 url = "flavors/detail?" + "".join(param_list)
33
chris fattarsi5098fa22012-04-17 13:27:00 -070034 resp, body = self.get(url)
Daryl Walleck1465d612011-11-02 02:22:15 -050035 body = json.loads(body)
Daryl Walleck74d04092012-01-10 23:33:46 -060036 return resp, body['flavors']
Daryl Walleck1465d612011-11-02 02:22:15 -050037
38 def get_flavor_details(self, flavor_id):
chris fattarsi5098fa22012-04-17 13:27:00 -070039 resp, body = self.get("flavors/%s" % str(flavor_id))
Daryl Walleck1465d612011-11-02 02:22:15 -050040 body = json.loads(body)
41 return resp, body['flavor']
Rohit Karajgi03530292012-04-24 17:00:50 -070042
43 def create_flavor(self, name, ram, vcpus, disk, ephemeral, flavor_id,
Zhongyue Luo79d8d362012-09-25 13:49:27 +080044 swap, rxtx):
Rohit Karajgi03530292012-04-24 17:00:50 -070045 """Creates a new flavor or instance type"""
46 post_body = {
Zhongyue Luo30a563f2012-09-30 23:43:50 +090047 'name': name,
48 'ram': ram,
49 'vcpus': vcpus,
50 'disk': disk,
51 'OS-FLV-EXT-DATA:ephemeral': ephemeral,
52 'id': flavor_id,
53 'swap': swap,
54 'rxtx_factor': rxtx,
55 }
Rohit Karajgi03530292012-04-24 17:00:50 -070056
57 post_body = json.dumps({'flavor': post_body})
58 resp, body = self.post('flavors', post_body, self.headers)
59
60 body = json.loads(body)
61 return resp, body['flavor']
62
63 def delete_flavor(self, flavor_id):
64 """Deletes the given flavor"""
65 return self.delete("flavors/%s" % str(flavor_id))