Skip to content

Commit b6e90fd

Browse files
authored
[AMS] Update AMS Module to 9.0 Python sdk (#22056)
* updated ams cli module to latest 9.0 python sdk * updated tests * updating test cases
1 parent d29dcf4 commit b6e90fd

File tree

92 files changed

+43150
-14324
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+43150
-14324
lines changed

src/azure-cli/azure/cli/command_modules/ams/_client_factory.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,7 @@ def get_account_filters_client(cli_ctx, *_):
8585

8686
def get_asset_filters_client(cli_ctx, *_):
8787
return cf_media(cli_ctx).asset_filters
88+
89+
90+
def get_asset_tracks_client(cli_ctx, *_):
91+
return cf_media(cli_ctx).tracks

src/azure-cli/azure/cli/command_modules/ams/_help.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,31 @@
241241
short-summary: Manage account filters for an Azure Media Services account.
242242
"""
243243

244+
helps['ams asset-track'] = """
245+
type: group
246+
short-summary: Manage asset tracks for an Azure Media Services account.
247+
"""
248+
249+
helps['ams asset-track show'] = """
250+
type: command
251+
short-summary: Show the details of a track.
252+
"""
253+
254+
helps['ams asset-track create'] = """
255+
type: command
256+
short-summary: Create a track for an Azure Media Services asset.
257+
"""
258+
259+
helps['ams asset-track update'] = """
260+
type: command
261+
short-summary: Update the parameters of a track.
262+
"""
263+
264+
helps['ams asset-track update-data'] = """
265+
type: command
266+
short-summary: Update a track if the file in the storage container was recently modified.
267+
"""
268+
244269
helps['ams asset show'] = """
245270
type: command
246271
short-summary: Show the details of an asset.
@@ -473,6 +498,11 @@
473498
short-summary: Manage streaming endpoints for an Azure Media Service account.
474499
"""
475500

501+
helps['ams streaming-endpoint get-skus'] = """
502+
type: command
503+
short-summary: Get the sku details for a streaming endpoint.
504+
"""
505+
476506
helps['ams streaming-endpoint start'] = """
477507
type: command
478508
short-summary: Start a streaming endpoint.

src/azure-cli/azure/cli/command_modules/ams/_params.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747

4848
def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statements
49-
name_arg_type = CLIArgumentType(options_list=['--name', '-n'], id_part='name', help='The name of the Azure Media Services account.', metavar='NAME')
49+
name_arg_type = CLIArgumentType(options_list=['--name', '-n'], id_part='name', help='The name of the resource.', metavar='NAME')
5050
account_name_arg_type = CLIArgumentType(options_list=['--account-name', '-a'], id_part='name', help='The name of the Azure Media Services account.', metavar='ACCOUNT_NAME')
5151
storage_account_arg_type = CLIArgumentType(options_list=['--storage-account'], validator=validate_storage_account_id, metavar='STORAGE_NAME')
5252
password_arg_type = CLIArgumentType(options_list=['--password', '-p'], metavar='PASSWORD_NAME')
@@ -203,6 +203,30 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem
203203
with self.argument_context('ams asset-filter list') as c:
204204
c.argument('account_name', id_part=None)
205205

206+
with self.argument_context('ams asset-track') as c:
207+
c.argument('account_name', account_name_arg_type)
208+
c.argument('asset_name', help='The asset name')
209+
c.argument('track_name', help='The name of the track.')
210+
211+
with self.argument_context('ams asset-track create') as c:
212+
c.argument('track_type', help='The type of track. Allowed values: Text.')
213+
c.argument('file_name', help='The name of the file.'
214+
' Note: this file should already be uploaded to the storage container.', arg_group='Text Track')
215+
c.argument('display_name', help='The display name of the text track on a video player.'
216+
' In HLS, this maps to the NAME attribute of EXT-X-MEDIA.', arg_group='Text Track')
217+
c.argument('language_code', arg_group='Text Track', help='The RFC5646 language code for the text track.')
218+
c.argument('player_visibility', arg_group='Text Track', help='When PlayerVisibility is set to "Visible", the text track will be present in the DASH manifest or HLS playlist when requested by a client. When the PlayerVisibility is set to "Hidden", the text will not be available to the client. The default value is "Visible". Possible values include: "Hidden", "Visible".')
219+
220+
with self.argument_context('ams asset-track list') as c:
221+
c.argument('account_name', id_part=None)
222+
223+
with self.argument_context('ams asset-track update') as c:
224+
c.argument('track_type', help='The type of track. Allowed values: Audio, Text, Video.')
225+
c.argument('display_name', arg_group='Text Track', help='The display name of the text track on a video player.'
226+
' In HLS, this maps to the NAME attribute of EXT-X-MEDIA.')
227+
c.argument('language_code', arg_group='Text Track', help='The RFC5646 language code for the text track.')
228+
c.argument('player_visibility', arg_group='Text Track', help='When PlayerVisibility is set to "Visible", the text track will be present in the DASH manifest or HLS playlist when requested by a client. When the PlayerVisibility is set to "Hidden", the text will not be available to the client. The default value is "Visible". Possible values include: "Hidden", "Visible".')
229+
206230
with self.argument_context('ams job') as c:
207231
c.argument('account_name', account_name_arg_type)
208232
c.argument('transform_name', transform_name_arg_type, id_part='child_name_1',

src/azure-cli/azure/cli/command_modules/ams/commands.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
get_streaming_policies_client, get_streaming_endpoints_client,
1010
get_locations_client, get_live_events_client, get_live_outputs_client,
1111
get_content_key_policies_client, get_asset_filters_client,
12-
get_account_filters_client)
12+
get_account_filters_client, get_asset_tracks_client)
1313
from ._exception_handler import ams_exception_handler
1414

1515

@@ -127,6 +127,21 @@ def get_custom_sdk(custom_module, client_factory):
127127
custom_func_name='update_asset_filter',
128128
custom_func_type=get_custom_sdk('asset_filter', get_mediaservices_client))
129129

130+
with self.command_group('ams asset-track', get_sdk('Tracks', get_asset_tracks_client)) as g:
131+
g.command('list', 'list')
132+
g.custom_show_command('show', 'get_asset_track',
133+
custom_command_type=get_custom_sdk('tracks', get_asset_tracks_client))
134+
g.command('delete', 'begin_delete')
135+
g.custom_command('create', 'create_asset_track',
136+
custom_command_type=get_custom_sdk('tracks', get_asset_tracks_client),
137+
supports_no_wait=True)
138+
g.custom_command('update', 'update_track',
139+
custom_command_type=get_custom_sdk('tracks', get_asset_tracks_client),
140+
supports_no_wait=True)
141+
g.custom_command('update-data', 'update_track_data',
142+
custom_command_type=get_custom_sdk('tracks', get_asset_tracks_client),
143+
supports_no_wait=True)
144+
130145
with self.command_group('ams job', get_sdk('Jobs', get_jobs_client)) as g:
131146
g.custom_show_command('show', 'get_job',
132147
custom_command_type=get_custom_sdk('job', get_jobs_client))
@@ -205,6 +220,8 @@ def get_custom_sdk(custom_module, client_factory):
205220
custom_command_type=get_custom_sdk('streaming_endpoint', get_streaming_endpoints_client))
206221
g.command('delete', 'begin_delete')
207222
g.wait_command('wait')
223+
g.custom_command('get-skus', 'get_skus',
224+
custom_command_type=get_custom_sdk('streaming_endpoint', get_streaming_endpoints_client))
208225

209226
with self.command_group('ams streaming-endpoint akamai', get_sdk('StreamingEndpoints', get_streaming_endpoints_client)) as g:
210227
g.custom_command('add', 'add_akamai_access_control',

src/azure-cli/azure/cli/command_modules/ams/operations/streaming_endpoint.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,7 @@ def get_streaming_endpoint(client, resource_group_name, account_name,
213213
streaming_endpoint_name)
214214

215215
return streaming_endpoint
216+
217+
218+
def get_skus(client, resource_group_name, account_name, streaming_endpoint_name):
219+
return client.skus(resource_group_name, account_name, streaming_endpoint_name)
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
7+
from azure.cli.core.util import CLIError, sdk_no_wait
8+
from azure.mgmt.media.models import (AssetTrack, TextTrack)
9+
10+
11+
def get_asset_track(client, account_name, resource_group_name, asset_name, track_name):
12+
return client.get(resource_group_name, account_name, asset_name, track_name)
13+
14+
15+
def create_asset_track(client, account_name, resource_group_name, asset_name, track_name, track_type, file_name=None,
16+
display_name=None, player_visibility=None, language_code=None, no_wait=False):
17+
track = None
18+
if track_type == 'Text':
19+
track = TextTrack(file_name=file_name, display_name=display_name, player_visibility=player_visibility,
20+
language_code=language_code)
21+
else:
22+
raise CLIError("'{}' is not a valid track type. Currently supported track type is Text.".format(track_type))
23+
24+
return sdk_no_wait(no_wait, client.begin_create_or_update, resource_group_name=resource_group_name,
25+
account_name=account_name, asset_name=asset_name, track_name=track_name,
26+
parameters=AssetTrack(track=track))
27+
28+
29+
def update_track_data(client, account_name, resource_group_name, asset_name, track_name, no_wait=False):
30+
return sdk_no_wait(no_wait, client.begin_update_track_data, resource_group_name=resource_group_name,
31+
account_name=account_name, asset_name=asset_name, track_name=track_name)
32+
33+
34+
def update_track(client, account_name, resource_group_name, asset_name, track_name,
35+
display_name=None, player_visibility=None, language_code=None, no_wait=False):
36+
current_track = client.get(resource_group_name, account_name, asset_name, track_name)
37+
38+
if display_name:
39+
current_track.track.display_name = display_name
40+
if player_visibility:
41+
current_track.track.player_visibility = player_visibility
42+
if language_code:
43+
current_track.track.language_code = language_code
44+
45+
return sdk_no_wait(no_wait, client.begin_update, resource_group_name=resource_group_name,
46+
account_name=account_name, asset_name=asset_name, track_name=track_name,
47+
parameters=current_track)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
Generated by LyricPotato
4+
http://lyricpotato.com
5+
DKID: 3475014.2FDD1D176991032F79DC2DB683187859
6+
-->
7+
<tt xmlns="http://www.w3.org/ns/ttml"
8+
xmlns:tts="http://www.w3.org/ns/ttml#styling"
9+
xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
10+
xml:lang="en">
11+
<head>
12+
</head>
13+
<body>
14+
<div>
15+
<p begin="00:00:00.000" end="00:00:04.838">hi this is a song</p>
16+
</div>
17+
</body>
18+
</tt>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
3+
<head>
4+
<meta name="clientManifestRelativePath" content="Web capture_12-4-2022_141014_ms..ismc" />
5+
<meta name="formats" content="mp4-v3" />
6+
</head>
7+
<body>
8+
<switch>
9+
<video src="Web capture_12-4-2022_141014_ms._1920x892_6000.mp4" systemBitrate="12520000">
10+
<param name="systemBitrate" value="12520000" valuetype="data" />
11+
<param name="trackID" value="1" valuetype="data" />
12+
<param name="trackName" value="video" valuetype="data" />
13+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._1920x892_6000_1.mpi" valuetype="data" />
14+
</video>
15+
<video src="Web capture_12-4-2022_141014_ms._1920x892_4700.mp4" systemBitrate="10658000">
16+
<param name="systemBitrate" value="10658000" valuetype="data" />
17+
<param name="trackID" value="1" valuetype="data" />
18+
<param name="trackName" value="video" valuetype="data" />
19+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._1920x892_4700_1.mpi" valuetype="data" />
20+
</video>
21+
<video src="Web capture_12-4-2022_141014_ms._1280x596_3400.mp4" systemBitrate="6626600">
22+
<param name="systemBitrate" value="6626600" valuetype="data" />
23+
<param name="trackID" value="1" valuetype="data" />
24+
<param name="trackName" value="video" valuetype="data" />
25+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._1280x596_3400_1.mpi" valuetype="data" />
26+
</video>
27+
<video src="Web capture_12-4-2022_141014_ms._960x448_2250.mp4" systemBitrate="4001800">
28+
<param name="systemBitrate" value="4001800" valuetype="data" />
29+
<param name="trackID" value="1" valuetype="data" />
30+
<param name="trackName" value="video" valuetype="data" />
31+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._960x448_2250_1.mpi" valuetype="data" />
32+
</video>
33+
<video src="Web capture_12-4-2022_141014_ms._960x448_1500.mp4" systemBitrate="3150200">
34+
<param name="systemBitrate" value="3150200" valuetype="data" />
35+
<param name="trackID" value="1" valuetype="data" />
36+
<param name="trackName" value="video" valuetype="data" />
37+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._960x448_1500_1.mpi" valuetype="data" />
38+
</video>
39+
<video src="Web capture_12-4-2022_141014_ms._640x300_1000.mp4" systemBitrate="1580800">
40+
<param name="systemBitrate" value="1580800" valuetype="data" />
41+
<param name="trackID" value="1" valuetype="data" />
42+
<param name="trackName" value="video" valuetype="data" />
43+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._640x300_1000_1.mpi" valuetype="data" />
44+
</video>
45+
<video src="Web capture_12-4-2022_141014_ms._640x300_650.mp4" systemBitrate="1139400">
46+
<param name="systemBitrate" value="1139400" valuetype="data" />
47+
<param name="trackID" value="1" valuetype="data" />
48+
<param name="trackName" value="video" valuetype="data" />
49+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._640x300_650_1.mpi" valuetype="data" />
50+
</video>
51+
<video src="Web capture_12-4-2022_141014_ms._320x152_400.mp4" systemBitrate="675800">
52+
<param name="systemBitrate" value="675800" valuetype="data" />
53+
<param name="trackID" value="1" valuetype="data" />
54+
<param name="trackName" value="video" valuetype="data" />
55+
<param name="trackIndex" value="Web capture_12-4-2022_141014_ms._320x152_400_1.mpi" valuetype="data" />
56+
</video>
57+
</switch>
58+
</body>
59+
</smil>

0 commit comments

Comments
 (0)