Skip to content

Commit 9dcf7ae

Browse files
committed
Update code
1 parent 29ceb6c commit 9dcf7ae

3 files changed

Lines changed: 42 additions & 7 deletions

File tree

‎src/cloudservice/azext_cloudservice/commands.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77

88
def load_command_table(self, _):
99
from azext_cloudservice.operations.cloud_service import CloudServiceList, CloudServiceListAll
10+
from azext_cloudservice.operations.role_instance import RoleInstanceShowRemoteDesktopFile
1011
from azext_cloudservice.operations.update_domain import UpdateDomainWalkUpdateDomain
1112

1213
self.command_table['cloud-service list'] = CloudServiceList(loader=self)
1314
self.command_table['cloud-service list-all'] = CloudServiceListAll(loader=self)
15+
self.command_table['cloud-service role-instance show-remote-desktop-file'] = \
16+
RoleInstanceShowRemoteDesktopFile(loader=self)
1417
self.command_table['cloud-service update-domain walk-update-domain'] = UpdateDomainWalkUpdateDomain(loader=self)
1518

1619
with self.command_group('cloud-service', is_experimental=True) as g:
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# --------------------------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for license information.
4+
# --------------------------------------------------------------------------------------------
5+
6+
# pylint: disable=protected-access
7+
8+
from azext_cloudservice.aaz.latest.cloud_service.role_instance._show_remote_desktop_file import \
9+
ShowRemoteDesktopFile as _ShowRemoteDesktopFile
10+
11+
12+
class RoleInstanceShowRemoteDesktopFile(_ShowRemoteDesktopFile):
13+
"""The service returns the RDP file as application/x-rdp, not JSON."""
14+
15+
class CloudServiceRoleInstancesGetRemoteDesktopFile(
16+
_ShowRemoteDesktopFile.CloudServiceRoleInstancesGetRemoteDesktopFile):
17+
18+
def __call__(self, *args, **kwargs):
19+
request = self.make_request()
20+
# stream=True keeps the content-decode policy from rejecting application/x-rdp
21+
session = self.client.send_request(request=request, stream=True, **kwargs)
22+
if session.http_response.status_code in [200]:
23+
return self.on_200(session)
24+
return self.on_error(session.http_response)
25+
26+
@property
27+
def header_parameters(self):
28+
return {
29+
**self.serialize_header_param("Accept", "application/x-rdp"),
30+
}
31+
32+
def on_200(self, session):
33+
data = session.http_response.body().decode('utf-8')
34+
self.ctx.set_var(
35+
"instance",
36+
data,
37+
schema_builder=self._build_schema_on_200
38+
)

‎src/cloudservice/azext_cloudservice/tests/latest/test_cloud_service_commands.py‎

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,9 @@ def test_no_wait_sends_the_same_request(self):
231231
reqs = self._run(command + ' --no-wait')
232232
self.assertEqual([(method, path, body)], [(r['method'], r['path'], r['body']) for r in reqs])
233233

234-
@unittest.expectedFailure
235234
def test_remote_desktop_file_request(self):
236235
with stub_http() as rec:
237-
try:
238-
self.cmd('cloud-service role-instance show-remote-desktop-file ' + RI)
239-
except Exception: # pylint: disable=broad-except
240-
pass # output handling is covered separately
236+
self.cmd('cloud-service role-instance show-remote-desktop-file ' + RI)
241237
self.assertEqual(1, len(rec.requests))
242238
self.assertEqual('GET', rec.requests[0]['method'])
243239
self.assertEqual(BASE + '/cs1/roleInstances/ri1/remoteDesktopFile', rec.requests[0]['path'])
@@ -339,8 +335,6 @@ def test_lro_commands_return_resource_or_nothing(self):
339335
self.assertEqual('', self.cmd('cloud-service delete ' + SVC + ' -y').output.strip())
340336
self.assertEqual('', self.cmd('cloud-service restart ' + SVC).output.strip())
341337

342-
# Known gap: the generated command cannot decode application/x-rdp
343-
@unittest.expectedFailure
344338
def test_remote_desktop_file_returns_rdp_text(self):
345339
with stub_http():
346340
result = self.cmd('cloud-service role-instance show-remote-desktop-file ' + RI).output

0 commit comments

Comments
 (0)