Skip to content

Commit 0075717

Browse files
authored
api: fix listVirtuaMachinesMetrics API for user (#6985)
Fixes #6983 In case of multiple classes for and API class, ApiServer returns an API command class for User role only when ResponseView is set to Restricted in annotation. This PR set Restricted ResponseView for ListVMsMetrics class. It also adds a smoke test for User role account for the listVirtualMachinesMetrics API. Signed-off-by: Abhishek Kumar <[email protected]>
1 parent d331b2f commit 0075717

File tree

2 files changed

+32
-14
lines changed

2 files changed

+32
-14
lines changed

Diff for: plugins/metrics/src/main/java/org/apache/cloudstack/api/ListVMsMetricsCmd.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
* </ul>
4444
*/
4545
@APICommand(name = ListVMsMetricsCmd.APINAME, description = "Lists VM metrics", responseObject = VmMetricsResponse.class,
46-
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, responseView = ResponseObject.ResponseView.Full,
46+
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, responseView = ResponseObject.ResponseView.Restricted,
4747
since = "4.9.3", authorized = {RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User})
4848
public class ListVMsMetricsCmd extends ListVMsCmd implements UserCmd {
4949
public static final String APINAME = "listVirtualMachinesMetrics";

Diff for: test/integration/smoke/test_metrics_api.py

+31-13
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,28 @@ def setUpClass(cls):
5858
cls.hypervisor
5959
)
6060
cls._cleanup.append(cls.service_offering)
61+
cls.domain = get_domain(cls.apiclient)
62+
cls.account = Account.create(
63+
cls.apiclient,
64+
cls.services["account"],
65+
admin=False,
66+
domainid=cls.domain.id
67+
)
68+
cls._cleanup.append(cls.account)
6169

6270
@classmethod
6371
def tearDownClass(cls):
6472
super(TestMetrics, cls).tearDownClass()
6573

6674
def setUp(self):
75+
self.userapiclient = self.testClient.getUserApiClient(
76+
UserName=self.account.name,
77+
DomainName=self.account.domain
78+
)
6779
self.cleanup = []
6880

6981
def tearDown(self):
70-
super(TestMetrics, self).tearDown();
82+
super(TestMetrics, self).tearDown()
7183

7284
@attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
7385
def test_list_hosts_metrics(self):
@@ -117,23 +129,24 @@ def test_list_zones_metrics(self):
117129

118130
return
119131

120-
@attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
121-
def test_list_vms_metrics(self):
122-
#deploy VM
132+
def run_list_vm_metrics_test(self, is_user):
133+
apiclient = self.apiclient
134+
if is_user:
135+
apiclient = self.userapiclient
123136
self.small_virtual_machine = VirtualMachine.create(
124-
self.apiclient,
125-
self.services["virtual_machine"],
126-
serviceofferingid=self.service_offering.id,
127-
templateid=self.template.id,
128-
zoneid=self.zone.id
129-
)
137+
apiclient,
138+
self.services["virtual_machine"],
139+
serviceofferingid=self.service_offering.id,
140+
templateid=self.template.id,
141+
zoneid=self.zone.id
142+
)
130143
self.cleanup.append(self.small_virtual_machine)
131144

132145

133146
cmd = listVirtualMachinesMetrics.listVirtualMachinesMetricsCmd()
134147
cmd.id = self.small_virtual_machine.id
135148

136-
lvmm = self.apiclient.listVirtualMachinesMetrics(cmd)[0]
149+
lvmm = apiclient.listVirtualMachinesMetrics(cmd)[0]
137150

138151
self.assertEqual(lvmm.id, self.small_virtual_machine.id)
139152

@@ -144,7 +157,13 @@ def test_list_vms_metrics(self):
144157
self.assertTrue(hasattr(lvmm, 'networkread'))
145158
self.assertTrue(hasattr(lvmm, 'networkwrite'))
146159

147-
return
160+
@attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
161+
def test_list_vms_metrics_admin(self):
162+
self.run_list_vm_metrics_test(False)
163+
164+
@attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
165+
def test_list_vms_metrics_user(self):
166+
self.run_list_vm_metrics_test(True)
148167

149168
@attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
150169
def test_list_pstorage_metrics(self):
@@ -376,4 +395,3 @@ def valid_date(cls, date_text):
376395
return True
377396
except ValueError:
378397
return False
379-

0 commit comments

Comments
 (0)