Hello community,

here is the log from the commit of package azure-cli-ams for openSUSE:Factory 
checked in at 2019-10-31 18:15:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-cli-ams (Old)
 and      /work/SRC/openSUSE:Factory/.azure-cli-ams.new.2990 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "azure-cli-ams"

Thu Oct 31 18:15:05 2019 rev:4 rq:742670 version:0.4.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/azure-cli-ams/azure-cli-ams.changes      
2019-06-05 11:41:34.275059947 +0200
+++ /work/SRC/openSUSE:Factory/.azure-cli-ams.new.2990/azure-cli-ams.changes    
2019-10-31 18:15:07.222002134 +0100
@@ -1,0 +2,9 @@
+Thu Oct 24 12:08:31 UTC 2019 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- New upstream release
+  + Version 0.4.7
+  + For detailed information about changes see the
+    HISTORY.txt file provided with this package
+- Update Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  azure-cli-ams-0.4.1.tar.gz

New:
----
  azure-cli-ams-0.4.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ azure-cli-ams.spec ++++++
--- /var/tmp/diff_new_pack.scESLQ/_old  2019-10-31 18:15:08.394003347 +0100
+++ /var/tmp/diff_new_pack.scESLQ/_new  2019-10-31 18:15:08.394003347 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           azure-cli-ams
-Version:        0.4.1
+Version:        0.4.7
 Release:        0
 Summary:        Microsoft Azure CLI 'ams' Command Module
 License:        MIT
@@ -33,8 +33,8 @@
 Requires:       azure-cli-command-modules-nspkg
 Requires:       azure-cli-core
 Requires:       azure-cli-nspkg
-Requires:       python3-azure-graphrbac >= 0.53.0
-Requires:       python3-azure-mgmt-media >= 1.0.1
+Requires:       python3-azure-graphrbac >= 0.60.0
+Requires:       python3-azure-mgmt-media >= 1.1.1
 Requires:       python3-azure-nspkg >= 3.0.0
 Conflicts:      azure-cli < 2.0.0
 

++++++ azure-cli-ams-0.4.1.tar.gz -> azure-cli-ams-0.4.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-ams-0.4.1/HISTORY.rst 
new/azure-cli-ams-0.4.7/HISTORY.rst
--- old/azure-cli-ams-0.4.1/HISTORY.rst 2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/HISTORY.rst 2019-06-13 23:17:46.000000000 +0200
@@ -2,6 +2,29 @@
 
 Release History
 ===============
+0.4.7
++++++
+* Return ISO 8601 time strings for archive-window-length and 
key-frame-interval-duration.
+
+0.4.6
++++++
+* Minor fixes.
+
+0.4.5
++++++
+* Bug fix for asset and account filters update.
+
+0.4.4
++++++
+* The `account-filter` and `asset-filter` parameter `--bitrate` has been 
deprecated and will be removed in a future release. 
+  It has been renamed to `--first-quality`.
+* New encryption parameters support in `ams streaming-policy create` command 
added.
+* New paramter `filters` added to ams streaming-locator create.
+
+0.4.3
++++++
+* Minor fixes.
+
 0.4.1
 +++++
 * ams streaming-endpoint [start | stop | create | update] : added 'wait' 
command
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-ams-0.4.1/PKG-INFO 
new/azure-cli-ams-0.4.7/PKG-INFO
--- old/azure-cli-ams-0.4.1/PKG-INFO    2019-02-12 03:05:55.000000000 +0100
+++ new/azure-cli-ams-0.4.7/PKG-INFO    2019-06-13 23:18:01.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: azure-cli-ams
-Version: 0.4.1
+Version: 0.4.7
 Summary: Microsoft Azure Command-Line Tools AMS Command Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -19,6 +19,29 @@
         
         Release History
         ===============
+        0.4.7
+        +++++
+        * Return ISO 8601 time strings for archive-window-length and 
key-frame-interval-duration.
+        
+        0.4.6
+        +++++
+        * Minor fixes.
+        
+        0.4.5
+        +++++
+        * Bug fix for asset and account filters update.
+        
+        0.4.4
+        +++++
+        * The `account-filter` and `asset-filter` parameter `--bitrate` has 
been deprecated and will be removed in a future release. 
+          It has been renamed to `--first-quality`.
+        * New encryption parameters support in `ams streaming-policy create` 
command added.
+        * New paramter `filters` added to ams streaming-locator create.
+        
+        0.4.3
+        +++++
+        * Minor fixes.
+        
         0.4.1
         +++++
         * ams streaming-endpoint [start | stop | create | update] : added 
'wait' command
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/__init__.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/__init__.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/__init__.py   
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/__init__.py   
2019-06-13 23:17:46.000000000 +0200
@@ -12,7 +12,8 @@
 class MediaServicesCommandsLoader(AzCommandsLoader):
 
     def __init__(self, cli_ctx=None):
-        super(MediaServicesCommandsLoader, self).__init__(cli_ctx=cli_ctx, 
min_profile='2017-03-10-profile')
+        from azure.cli.core.profiles import ResourceType
+        super(MediaServicesCommandsLoader, self).__init__(cli_ctx=cli_ctx, 
resource_type=ResourceType.MGMT_MEDIA)
 
     def load_command_table(self, args):
         super(MediaServicesCommandsLoader, self).load_command_table(args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_help.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_help.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_help.py      
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_help.py      
2019-06-13 23:17:46.000000000 +0200
@@ -221,7 +221,7 @@
     examples:
         - name: Create an asset filter with filter track selections.
           text: >
-            az ams asset-filter create -a amsAccount -g resourceGroup -n 
filterName --force-end-timestamp=False --end-timestamp 200000 --start-timestamp 
100000 --live-backoff-duration 60 --presentation-window-duration 600000 
--timescale 1000 --bitrate 720 --asset-name assetName --tracks @C:\\tracks.json
+            az ams asset-filter create -a amsAccount -g resourceGroup -n 
filterName --force-end-timestamp=False --end-timestamp 200000 --start-timestamp 
100000 --live-backoff-duration 60 --presentation-window-duration 600000 
--timescale 1000 --first-quality 720 --asset-name assetName --tracks 
@C:\\tracks.json
 """
 
 helps['ams asset-filter update'] = """
@@ -568,7 +568,7 @@
     examples:
         - name: Create an asset filter with filter track selections.
           text: >
-            az ams account-filter create -a amsAccount -g resourceGroup -n 
filterName --force-end-timestamp=False --end-timestamp 200000 --start-timestamp 
100000 --live-backoff-duration 60 --presentation-window-duration 600000 
--timescale 1000 --bitrate 720 --tracks @C:\\tracks.json
+            az ams account-filter create -a amsAccount -g resourceGroup -n 
filterName --force-end-timestamp=False --end-timestamp 200000 --start-timestamp 
100000 --live-backoff-duration 60 --presentation-window-duration 600000 
--timescale 1000 --first-quality 720 --tracks @C:\\tracks.json
 """
 
 helps['ams account-filter update'] = """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_params.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_params.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_params.py    
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_params.py    
2019-06-13 23:17:46.000000000 +0200
@@ -8,8 +8,11 @@
 from knack.arguments import CLIArgumentType
 
 from azure.cli.core.commands.validators import 
get_default_location_from_resource_group
-from azure.cli.core.commands.parameters import (get_location_type, 
get_enum_type, tags_type,
+from azure.cli.core.commands.parameters import (get_location_type,
+                                                get_enum_type,
+                                                tags_type,
                                                 get_three_state_flag)
+
 from azure.cli.command_modules.ams._completers import 
(get_role_definition_name_completion_list,
                                                        
get_cdn_provider_completion_list,
                                                        
get_default_streaming_policies_completion_list,
@@ -22,9 +25,13 @@
                                                        
get_mru_type_completion_list,
                                                        get_encoding_types_list)
 
-from azure.cli.command_modules.ams._validators import 
(validate_storage_account_id, datetime_format,
-                                                       
validate_correlation_data, validate_token_claim,
-                                                       validate_output_assets)
+from azure.cli.command_modules.ams._validators import 
(validate_storage_account_id,
+                                                       datetime_format,
+                                                       
validate_correlation_data,
+                                                       validate_token_claim,
+                                                       validate_output_assets,
+                                                       
validate_archive_window_length,
+                                                       
validate_key_frame_interval_duration)
 
 from azure.mgmt.media.models import (Priority, AssetContainerPermission, 
LiveEventInputProtocol, StreamOptionsFlag, OnErrorType, InsightsType)
 
@@ -37,6 +44,8 @@
     transform_name_arg_type = 
CLIArgumentType(options_list=['--transform-name', '-t'], 
metavar='TRANSFORM_NAME')
     expiry_arg_type = CLIArgumentType(options_list=['--expiry'], 
type=datetime_format, metavar='EXPIRY_TIME')
     default_policy_name_arg_type = 
CLIArgumentType(options_list=['--content-key-policy-name'], help='The default 
content key policy name used by the streaming locator.', 
metavar='DEFAULT_CONTENT_KEY_POLICY_NAME')
+    archive_window_length_arg_type = 
CLIArgumentType(options_list=['--archive-window-length'], 
validator=validate_archive_window_length, metavar='ARCHIVE_WINDOW_LENGTH')
+    key_frame_interval_duration_arg_type = 
CLIArgumentType(options_list=['--key-frame-interval-duration'], 
validator=validate_archive_window_length, metavar='ARCHIVE_WINDOW_LENGTH')
     correlation_data_type = 
CLIArgumentType(validator=validate_correlation_data, help="Space-separated 
correlation data in 'key[=value]' format. This customer provided data will be 
returned in Job and JobOutput state events.", nargs='*', 
metavar='CORRELATION_DATA')
     token_claim_type = CLIArgumentType(validator=validate_token_claim, 
help="Space-separated required token claims in '[key=value]' format.", 
nargs='*', metavar='ASYMMETRIC TOKEN CLAIMS')
     output_assets_type = CLIArgumentType(validator=validate_output_assets, 
nargs='*', help="Space-separated assets in 'assetName=label' format. An asset 
without label can be sent like this: 'assetName='", metavar='OUTPUT_ASSETS')
@@ -51,11 +60,11 @@
 
     with self.argument_context('ams account create') as c:
         c.argument('storage_account', storage_account_arg_type,
-                   help='The name or resource ID of the primary storage 
account to attach to the Azure Media Services account. Blob only accounts are 
not allowed as primary.')
+                   help='The name or resource ID of the primary storage 
account to attach to the Azure Media Services account. The storage account MUST 
be in the same Azure subscription as the Media Services account. It is strongly 
recommended that the storage account be in the same resource group as the Media 
Services account. Blob only accounts are not allowed as primary.')
 
     with self.argument_context('ams account check-name') as c:
         c.argument('account_name', options_list=['--name', '-n'], id_part=None,
-                   help='The name of the Azure Media Services account')
+                   help='The name of the Azure Media Services account.')
         c.argument('location', arg_type=get_location_type(self.cli_ctx))
 
     with self.argument_context('ams account mru') as c:
@@ -129,14 +138,20 @@
         c.argument('account_name', account_name_arg_type)
         c.argument('asset_name', help='The name of the asset.', 
id_part='child_name_1')
         c.argument('filter_name', name_arg_type, id_part='child_name_2', 
help='The name of the asset filter.')
-        c.argument('start_timestamp', arg_group='Presentation Time Range', 
help='The absolute start time boundary.')
-        c.argument('end_timestamp', arg_group='Presentation Time Range', 
help='The absolute end time boundary.')
-        c.argument('presentation_window_duration', arg_group='Presentation 
Time Range', help='The relative to end sliding window.')
-        c.argument('live_backoff_duration', arg_group='Presentation Time 
Range', help='The relative to end right edge.')
-        c.argument('timescale', arg_group='Presentation Time Range', help='The 
time scale of time stamps.')
-        c.argument('force_end_timestamp', arg_group='Presentation Time Range',
-                   arg_type=get_three_state_flag(), help='Indicates whether to 
force the existance of an end timestamp.')
-        c.argument('bitrate', help='The first quality bitrate.')
+        c.argument('start_timestamp', arg_group='Presentation Time Range',
+                   help='Applies to Video on Demand (VoD) or Live Streaming. 
This is a long value that represents an absolute start point of the stream. The 
value gets rounded to the closest next GOP start. The unit is the timescale, so 
a startTimestamp of 150000000 would be for 15 seconds. Use startTimestamp and 
endTimestampp to trim the fragments that will be in the playlist (manifest). 
For example, startTimestamp=40000000 and endTimestamp=100000000 using the 
default timescale will generate a playlist that contains fragments from between 
4 seconds and 10 seconds of the VoD presentation. If a fragment straddles the 
boundary, the entire fragment will be included in the manifest.')
+        c.argument('end_timestamp', arg_group='Presentation Time Range',
+                   help='Applies to Video on Demand (VoD).For the Live 
Streaming presentation, it is silently ignored and applied when the 
presentation ends and the stream becomes VoD.This is a long value that 
represents an absolute end point of the presentation, rounded to the closest 
next GOP start. The unit is the timescale, so an endTimestamp of 1800000000 
would be for 3 minutes.Use startTimestamp and endTimestamp to trim the 
fragments that will be in the playlist (manifest).For example, 
startTimestamp=40000000 and endTimestamp=100000000 using the default timescale 
will generate a playlist that contains fragments from between 4 seconds and 10 
seconds of the VoD presentation. If a fragment straddles the boundary, the 
entire fragment will be included in the manifest.')
+        c.argument('presentation_window_duration', arg_group='Presentation 
Time Range',
+                   help='Applies to Live Streaming only.Use 
presentationWindowDuration to apply a sliding window of fragments to include in 
a playlist.The unit for this property is timescale (see below).For example, set 
presentationWindowDuration=1200000000 to apply a two-minute sliding window. 
Media within 2 minutes of the live edge will be included in the playlist. If a 
fragment straddles the boundary, the entire fragment will be included in the 
playlist. The minimum presentation window duration is 60 seconds.')
+        c.argument('live_backoff_duration', arg_group='Presentation Time 
Range',
+                   help='Applies to Live Streaming only. This value defines 
the latest live position that a client can seek to. Using this property, you 
can delay live playback position and create a server-side buffer for players. 
The unit for this property is timescale (see below). The maximum live back off 
duration is 300 seconds (3000000000). For example, a value of 2000000000 means 
that the latest available content is 20 seconds delayed from the real live 
edge.')
+        c.argument('timescale', arg_group='Presentation Time Range',
+                   help='Applies to all timestamps and durations in a 
Presentation Time Range, specified as the number of increments in one 
second.Default is 10000000 - ten million increments in one second, where each 
increment would be 100 nanoseconds long. For example, if you want to set a 
startTimestamp at 30 seconds, you would use a value of 300000000 when using the 
default timescale.')
+        c.argument('force_end_timestamp', arg_group='Presentation Time Range', 
arg_type=get_three_state_flag(),
+                   help='Applies to Live Streaming only. Indicates whether the 
endTimestamp property must be present. If true, endTimestamp must be specified 
or a bad request code is returned. Allowed values: false, true.')
+        c.argument('bitrate', help='The first quality bitrate.', 
deprecate_info=c.deprecate(target='--bitrate', redirect='--first-quality', 
hide=True))
+        c.argument('first_quality', help='The first quality (lowest) bitrate 
to include in the manifest.')
         c.argument('tracks', help='The JSON representing the track selections. 
Use @{file} to load from a file. For further information about the JSON 
structure please refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/assetfilters/assetfilters_createorupdate#filtertrackselection')
 
     with self.argument_context('ams asset-filter list') as c:
@@ -167,8 +182,7 @@
         c.argument('files',
                    nargs='+',
                    help='Space-separated list of files. It can be used to tell 
the service to only use the files specified from the input asset.')
-        c.argument('label', help='A label that is assigned to a JobInput, that 
is used to satisfy a reference used in the Transform.')
-        c.argument('label', help="A label that is assigned to a Job Input, 
that is used to satisfy a reference used in the Transform. For example, a 
Transform can be authored so as to take an image file with the label 'xyz' and 
apply it as an overlay onto the input video before it is encoded. When 
submitting a Job, exactly one of the JobInputs should be the image file, and it 
should have the label 'xyz'.")
+        c.argument('label', help="A label that is assigned to a Job Input that 
is used to satisfy a reference used in the Transform. For example, a Transform 
can be authored to take an image file with the label 'xyz' and apply it as an 
overlay onto the input video before it is encoded. When submitting a Job, 
exactly one of the JobInputs should be the image file, and it should have the 
label 'xyz'.")
         c.argument('correlation_data', arg_type=correlation_data_type)
 
     with self.argument_context('ams job cancel') as c:
@@ -203,7 +217,7 @@
                    help='The type of token. Allowed values: {}.'.format(", 
".join(get_token_type_completion_list())))
         c.argument('open_id_connect_discovery_document', arg_group='Token 
Restriction', help='The OpenID connect discovery document.')
         c.argument('widevine_template', arg_group='Widevine Configuration', 
help='JSON Widevine license template. Use @{file} to load from a file.')
-        c.argument('ask', arg_group='FairPlay Configuration', help='The key 
that must be used as FairPlay Application Secret key.')
+        c.argument('ask', arg_group='FairPlay Configuration', help='The key 
that must be used as FairPlay Application Secret Key.')
         c.argument('fair_play_pfx_password', arg_group='FairPlay 
Configuration', help='The password encrypting FairPlay certificate in PKCS 12 
(pfx) format.')
         c.argument('fair_play_pfx', arg_group='FairPlay Configuration', 
help='The filepath to a FairPlay certificate file in PKCS 12 (pfx) format 
(including private key).')
         c.argument('rental_and_lease_key_type', arg_group='FairPlay 
Configuration', help='The rental and lease key type. Available values: 
{}.'.format(", ".join(get_fairplay_rentalandlease_completion_list())))
@@ -228,12 +242,13 @@
         c.argument('streaming_policy_name',
                    help='The name of the streaming policy used by the 
streaming locator. You can either create one with `az ams streaming policy 
create` or use any of the predefined policies: {}'.format(", 
".join(get_default_streaming_policies_completion_list())))
         c.argument('start_time', type=datetime_format,
-                   help="The start time (Y-m-d'T'H:M:S'Z') of the streaming 
locator.")
+                   help="The ISO 8601 DateTime start time (Y-m-d'T'H:M:S'Z') 
of the streaming locator.")
         c.argument('end_time', type=datetime_format,
-                   help="The end time (Y-m-d'T'H:M:S'Z') of the streaming 
locator.")
+                   help="The ISO 8601 DateTime end time (Y-m-d'T'H:M:S'Z') of 
the streaming locator.")
         c.argument('streaming_locator_id', help='The identifier of the 
streaming locator.')
         c.argument('alternative_media_id', help='An alternative media 
identifier associated with the streaming locator.')
         c.argument('content_keys', help='JSON string with the content keys to 
be used by the streaming locator. Use @{file} to load from a file. For further 
information about the JSON structure please refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/streaminglocators/streaminglocators_create#streaminglocatorcontentkey')
+        c.argument('filters', nargs='+', help='A space-separated list of asset 
filter names and/or account filter names.')
 
     with self.argument_context('ams streaming-locator list') as c:
         c.argument('account_name', id_part=None)
@@ -257,14 +272,16 @@
         c.argument('cenc_play_ready_attributes', arg_group='Common Encryption 
CENC', help='Custom attributes for PlayReady.')
         c.argument('cenc_widevine_template', arg_group='Common Encryption 
CENC', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.')
         c.argument('cenc_play_ready_template', arg_group='Common Encryption 
CENC', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.')
+        c.argument('cenc_disable_widevine', arg_group='Common Encryption 
CENC', arg_type=get_three_state_flag(), help='If specified, no Widevine cenc 
DRM will be configured. If --cenc-disable-widevine is set, 
--cenc-disable-play-ready cannot also be set.')
+        c.argument('cenc_disable_play_ready', arg_group='Common Encryption 
CENC', arg_type=get_three_state_flag(), help='If specified, no PlayReady cenc 
DRM will be configured. If --cenc-disable-play-ready is set, 
--cenc-disable-widevine cannot also be set.')
         c.argument('cbcs_protocols', nargs='+', arg_group='Common Encryption 
CBCS', help='Space-separated list of enabled protocols for Common Encryption 
CBCS. Allowed values: {}.'.format(", ".join(get_protocols_completion_list())))
         c.argument('cbcs_default_key_label', arg_group='Common Encryption 
CBCS', help='Label to specify Default Content Key for an encryption scheme.')
         c.argument('cbcs_default_key_policy_name', arg_group='Common 
Encryption CBCS', help='Policy used by Default Content Key.')
         c.argument('cbcs_clear_tracks', arg_group='Common Encryption CBCS', 
help='The JSON representing which tracks should not be encrypted. Use @{file} 
to load from a file. For further information about the JSON structure please 
refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/streamingpolicies/create#trackselection')
         c.argument('cbcs_key_to_track_mappings', arg_group='Common Encryption 
CBCS', help='The JSON representing a list of StreamingPolicyContentKey. Use 
@{file} to load from a file. For further information about the JSON structure 
please refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/streamingpolicies/create#streamingpolicycontentkey')
-        c.argument('cbcs_play_ready_attributes', arg_group='Common Encryption 
CBCS', help='Custom attributes for PlayReady.')
-        c.argument('cbcs_widevine_template', arg_group='Common Encryption 
CBCS', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.')
-        c.argument('cbcs_play_ready_template', arg_group='Common Encryption 
CBCS', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.')
+        c.argument('cbcs_play_ready_attributes', arg_group='Common Encryption 
CBCS', help='Custom attributes for PlayReady.', 
deprecate_info=c.deprecate(hide=True))
+        c.argument('cbcs_play_ready_template', arg_group='Common Encryption 
CBCS', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.', deprecate_info=c.deprecate(hide=True))
+        c.argument('cbcs_widevine_template', arg_group='Common Encryption 
CBCS', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.', deprecate_info=c.deprecate(hide=True))
         c.argument('cbcs_fair_play_template', arg_group='Common Encryption 
CBCS', help='The custom license acquisition URL template for a customer service 
to deliver keys to end users. Not needed when using Azure Media Services for 
issuing keys.')
         c.argument('cbcs_fair_play_allow_persistent_license', 
arg_group='Common Encryption CBCS', arg_type=get_three_state_flag(), 
help='Allows the license to be persistent or not.')
 
@@ -284,9 +301,9 @@
         c.argument('cdn_provider', arg_group='CDN Support', help='The CDN 
provider name. Allowed values: {}.'.format(", 
".join(get_cdn_provider_completion_list())))
         c.argument('cdn_profile', arg_group='CDN Support', help='The CDN 
profile name.')
         c.argument('client_access_policy', arg_group='Cross Site Access 
Policies',
-                   help='Filepath to the clientaccesspolicy.xml used by 
Silverlight. Use @{file} to load from a file.')
+                   help='The XML representing the clientaccesspolicy data used 
by Microsoft Silverlight and Adobe Flash. Use @{file} to load from a file. For 
further information about the XML structure please refer to documentation on 
https://docs.microsoft.com/en-us/rest/api/media/operations/crosssiteaccesspolicies')
         c.argument('cross_domain_policy', arg_group='Cross Site Access 
Policies',
-                   help='Filepath to the crossdomain.xml used by Silverlight. 
Use @{file} to load from a file.')
+                   help='The XML representing the crossdomain data used by 
Silverlight. Use @{file} to load from a file. For further information about the 
XML structure please refer to documentation on 
https://docs.microsoft.com/en-us/rest/api/media/operations/crosssiteaccesspolicies')
         c.argument('auto_start', action='store_true', help='The flag indicates 
if the resource should be automatically started on creation.')
         c.argument('ips', nargs='+', arg_group='Access Control Support', 
help='Space-separated IP addresses for access control. Allowed IP addresses can 
be specified as either a single IP address (e.g. "10.0.0.1") or as an IP range 
using an IP address and a CIDR subnet mask (e.g. "10.0.0.1/22"). Use "" to 
clear existing list. If no IP addresses are specified any IP address will be 
allowed.')
         c.argument('disable_cdn', arg_group='CDN Support', 
action='store_true', help='Use this flag to disable CDN for the streaming 
endpoint.')
@@ -298,9 +315,10 @@
         c.argument('scale_unit', options_list=['--scale-units'], help='The 
number of scale units for Premium StreamingEndpoints.')
 
     with self.argument_context('ams streaming-endpoint akamai') as c:
-        c.argument('identifier', help='Identifier of the key.')
-        c.argument('base64_key', help='Authentication key.')
-        c.argument('expiration', help='The expiration time of the 
authentication key.')
+        c.argument('identifier', help='The identifier for the authentication 
key. This is the nonce provided by Akamai.')
+        c.argument('base64_key', help='Base64-encoded authentication key that 
will be used by the CDN. The authentication key provided by Akamai is an ASCII 
encoded string, and must be converted to bytes and then base64 encoded.')
+        c.argument('expiration', type=datetime_format,
+                   help='The ISO 8601 DateTime value that specifies when the 
Akamai authentication expires.')
 
     with self.argument_context('ams streaming-endpoint list') as c:
         c.argument('account_name', id_part=None)
@@ -315,8 +333,8 @@
         c.argument('encoding_type', arg_group='Encoding', help='The encoding 
type for live event. This value is specified at creation time and cannot be 
updated. Allowed values: {}.'.format(", ".join(get_encoding_types_list())))
         c.argument('preset_name', arg_group='Encoding', help='The encoding 
preset name. This value is specified at creation time and cannot be updated.')
         c.argument('tags', arg_type=tags_type)
-        c.argument('key_frame_interval_duration', arg_group='Input',
-                   help='ISO 8601 timespan duration of the key frame interval 
duration.')
+        c.argument('key_frame_interval_duration', 
key_frame_interval_duration_arg_type, arg_group='Input', 
validator=validate_key_frame_interval_duration,
+                   help='ISO 8601 timespan duration of the key frame interval 
duration in seconds. The value should be an interger in the range of 1 (PT1S or 
00:00:01) to 30 (PT30S or 00:00:30) seconds.')
         c.argument('access_token', arg_group='Input', help='A unique 
identifier for a stream. This can be specified at creation time but cannot be 
updated. If omitted, the service will generate a unique value.')
         c.argument('description', help='The live event description.')
         c.argument('ips', nargs='+', arg_group='Input', help='Space-separated 
IP addresses for access control. Allowed IP addresses can be specified as 
either a single IP address (e.g. "10.0.0.1") or as an IP range using an IP 
address and a CIDR subnet mask (e.g. "10.0.0.1/22"). Use "" to clear existing 
list. Use "AllowAll" to allow all IP addresses. Allowing all IPs is not 
recommended for production environments.')
@@ -325,8 +343,8 @@
         c.argument('streaming_policy_name', arg_group='Preview', help='The 
name of streaming policy used for the live event preview. This can be specified 
at creation time but cannot be updated.')
         c.argument('alternative_media_id', arg_group='Preview', help='An 
Alternative Media Identifier associated with the StreamingLocator created for 
the preview. This value is specified at creation time and cannot be updated. 
The identifier can be used in the CustomLicenseAcquisitionUrlTemplate or the 
CustomKeyAcquisitionUrlTemplate of the StreamingPolicy specified in the 
StreamingPolicyName field.')
         c.argument('vanity_url', arg_type=get_three_state_flag(), 
help='Specifies whether to use a vanity url with the Live Event. This value is 
specified at creation time and cannot be updated.')
-        c.argument('client_access_policy', arg_group='Cross Site Access 
Policies', help='Filepath to the clientaccesspolicy.xml used by Silverlight. 
Use @{file} to load from a file.')
-        c.argument('cross_domain_policy', arg_group='Cross Site Access 
Policies', help='Filepath to the crossdomain.xml used by Silverlight. Use 
@{file} to load from a file.')
+        c.argument('client_access_policy', arg_group='Cross Site Access 
Policies', help='Filepath to the clientaccesspolicy.xml used by Microsoft 
Silverlight and Adobe Flash. Use @{file} to load from a file.')
+        c.argument('cross_domain_policy', arg_group='Cross Site Access 
Policies', help='Filepath to the crossdomain.xml used by Microsoft Silverlight 
and Adobe Flash. Use @{file} to load from a file.')
         c.argument('stream_options', nargs='+', 
arg_type=get_enum_type(StreamOptionsFlag), help='The options to use for the 
LiveEvent. This value is specified at creation time and cannot be updated.')
         c.argument('remove_outputs_on_stop', action='store_true', help='Remove 
live outputs on stop.')
 
@@ -345,23 +363,31 @@
 
     with self.argument_context('ams live-output create') as c:
         c.argument('asset_name', help='The name of the asset.')
+        c.argument('archive_window_length', archive_window_length_arg_type, 
validator=validate_archive_window_length,
+                   help="ISO 8601 timespan duration of the archive window 
length. This is the duration that customer want to retain the recorded content. 
Minimum window is 5 minutes (PT5M or 00:05:00). Maximum window is 25 hours 
(PT25H or 25:00:00). For example, to retain the output for 10 minutes, use 
PT10M or 00:10:00")
         c.argument('manifest_name', help='The manifest file name. If not 
provided, the service will generate one automatically.')
-        c.argument('archive_window_length', help='ISO 8601 timespan duration 
of the archive window length. This is the duration that customer want to retain 
the recorded content.')
         c.argument('description', help='The live output description.')
-        c.argument('fragments_per_ts_segment', help='The amount of fragments 
per HLS segment.')
+        c.argument('fragments_per_ts_segment', help='The number of fragments 
per HLS segment.')
         c.argument('output_snap_time', help='The output snapshot time.')
 
     with self.argument_context('ams account-filter') as c:
         c.argument('account_name', account_name_arg_type)
         c.argument('filter_name', name_arg_type, id_part='child_name_1', 
help='The name of the account filter.')
-        c.argument('start_timestamp', arg_group='Presentation Time Range', 
help='The absolute start time boundary.')
-        c.argument('end_timestamp', arg_group='Presentation Time Range', 
help='The absolute end time boundary.')
-        c.argument('presentation_window_duration', arg_group='Presentation 
Time Range', help='The relative to end sliding window.')
-        c.argument('live_backoff_duration', arg_group='Presentation Time 
Range', help='The relative to end right edge.')
-        c.argument('timescale', arg_group='Presentation Time Range', help='The 
time scale of time stamps.')
-        c.argument('force_end_timestamp', arg_type=get_three_state_flag(), 
arg_group='Presentation Time Range', help='Indicates whether to force the 
existance of an end timestamp.')
-        c.argument('bitrate', help='The first quality bitrate.')
-        c.argument('tracks', help='The JSON representing the track selections. 
Use @{file} to load from a file. For further information about the JSON 
structure please refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/accountfilters/accountfilters_createorupdate#filtertrackselection')
+        c.argument('start_timestamp', arg_group='Presentation Time Range',
+                   help='Applies to Video on Demand (VoD) or Live Streaming. 
This is a long value that represents an absolute start point of the stream. The 
value gets rounded to the closest next GOP start. The unit is the timescale, so 
a startTimestamp of 150000000 would be for 15 seconds. Use startTimestamp and 
endTimestampp to trim the fragments that will be in the playlist (manifest). 
For example, startTimestamp=40000000 and endTimestamp=100000000 using the 
default timescale will generate a playlist that contains fragments from between 
4 seconds and 10 seconds of the VoD presentation. If a fragment straddles the 
boundary, the entire fragment will be included in the manifest.')
+        c.argument('end_timestamp', arg_group='Presentation Time Range',
+                   help='Applies to Video on Demand (VoD). For the Live 
Streaming presentation, it is silently ignored and applied when the 
presentation ends and the stream becomes VoD. This is a long value that 
represents an absolute end point of the presentation, rounded to the closest 
next GOP start. The unit is the timescale, so an endTimestamp of 1800000000 
would be for 3 minutes. Use startTimestamp and endTimestamp to trim the 
fragments that will be in the playlist (manifest). For example, 
startTimestamp=40000000 and endTimestamp=100000000 using the default timescale 
will generate a playlist that contains fragments from between 4 seconds and 10 
seconds of the VoD presentation. If a fragment straddles the boundary, the 
entire fragment will be included in the manifest.')
+        c.argument('presentation_window_duration', arg_group='Presentation 
Time Range',
+                   help='Applies to Live Streaming only. Use 
presentationWindowDuration to apply a sliding window of fragments to include in 
a playlist. The unit for this property is timescale (see below). For example, 
set presentationWindowDuration=1200000000 to apply a two-minute sliding window. 
Media within 2 minutes of the live edge will be included in the playlist. If a 
fragment straddles the boundary, the entire fragment will be included in the 
playlist. The minimum presentation window duration is 60 seconds.')
+        c.argument('live_backoff_duration', arg_group='Presentation Time 
Range',
+                   help='Applies to Live Streaming only. This value defines 
the latest live position that a client can seek to. Using this property, you 
can delay live playback position and create a server-side buffer for players. 
The unit for this property is timescale (see below). The maximum live back off 
duration is 300 seconds (3000000000). For example, a value of 2000000000 means 
that the latest available content is 20 seconds delayed from the real live 
edge.')
+        c.argument('timescale', arg_group='Presentation Time Range',
+                   help='Applies to all timestamps and durations in a 
Presentation Time Range, specified as the number of increments in one second. 
Default is 10000000 - ten million increments in one second, where each 
increment would be 100 nanoseconds long. For example, if you want to set a 
startTimestamp at 30 seconds, you would use a value of 300000000 when using the 
default timescale.')
+        c.argument('force_end_timestamp', arg_group='Presentation Time Range', 
arg_type=get_three_state_flag(),
+                   help='Applies to Live Streaming only. Indicates whether the 
endTimestamp property must be present. If true, endTimestamp must be specified 
or a bad request code is returned. Allowed values: false, true.')
+        c.argument('bitrate', help='The first quality bitrate.', 
deprecate_info=c.deprecate(target='--bitrate', redirect='--first-quality', 
hide=True))
+        c.argument('first_quality', help='The first quality (lowest) bitrate 
to include in the manifest.')
+        c.argument('tracks', help='The JSON representing the track selections. 
Use @{file} to load from a file. For further information about the JSON 
structure please refer to swagger documentation on 
https://docs.microsoft.com/en-us/rest/api/media/accountfilters/createorupdate#filtertrackselection')
 
     with self.argument_context('ams account-filter list') as c:
         c.argument('account_name', id_part=None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_validators.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_validators.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/_validators.py        
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/_validators.py        
2019-06-13 23:17:46.000000000 +0200
@@ -34,6 +34,48 @@
     return datetime_obj
 
 
+def validate_archive_window_length(ns):
+    """Validate the correct format of a datetime string and the range."""
+    if ns.archive_window_length is not None:
+        from msrest.serialization import Deserializer
+        from msrest.exceptions import DeserializationError
+
+        try:
+            datetime_obj = 
Deserializer.deserialize_duration(ns.archive_window_length)
+        except DeserializationError:
+            message = "archive-window-length {} is not a valid ISO-8601 
duration format"
+            raise ValueError(message.format(ns.archive_window_length))
+
+        minwindow = Deserializer.deserialize_duration("PT5M")
+        maxwindow = Deserializer.deserialize_duration("PT25H")
+
+        if datetime_obj < minwindow or datetime_obj > maxwindow:
+            message = "archive-window-length '{}' is not in the range of PT5M 
and PT25H"\
+                .format(ns.archive_window_length)
+            raise ValueError(message)
+
+
+def validate_key_frame_interval_duration(ns):
+    """Validate the correct format of a datetime string and the range."""
+    if ns.key_frame_interval_duration is not None:
+        from msrest.serialization import Deserializer
+        from msrest.exceptions import DeserializationError
+
+        try:
+            datetime_obj = 
Deserializer.deserialize_duration(ns.key_frame_interval_duration)
+        except DeserializationError:
+            message = "key-frame-interval-duration {} is not a valid ISO-8601 
duration format"
+            raise ValueError(message.format(ns.key_frame_interval_duration))
+
+        minwindow = Deserializer.deserialize_duration("PT1S")
+        maxwindow = Deserializer.deserialize_duration("PT30S")
+
+        if datetime_obj < minwindow or datetime_obj > maxwindow:
+            message = "key-frame-interval-duration '{}' is not in the range of 
PT1S and PT30S"\
+                .format(ns.key_frame_interval_duration)
+            raise ValueError(message)
+
+
 def validate_correlation_data(ns):
     """ Extracts multiple space-separated correlation data in key[=value] 
format """
     if isinstance(ns.correlation_data, list):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/commands.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/commands.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/commands.py   
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/commands.py   
2019-06-13 23:17:46.000000000 +0200
@@ -227,3 +227,6 @@
         g.generic_update_command('update',
                                  custom_func_name='update_account_filter',
                                  
custom_func_type=get_custom_sdk('account_filter', get_mediaservices_client))
+
+    with self.command_group('ams', is_preview=True):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/account.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/account.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/account.py 
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/account.py 
2019-06-13 23:17:46.000000000 +0200
@@ -44,10 +44,10 @@
 def remove_mediaservice_secondary_storage(client, resource_group_name, 
account_name, storage_account):
     ams = client.get(resource_group_name, account_name)
 
-    storage_accounts_filtered = list(filter(lambda s: storage_account not in 
s.id and 'Secondary' in s.type.value,
+    storage_accounts_filtered = list(filter(lambda s: storage_account not in 
s.id and 'Secondary' in s.type,
                                             ams.storage_accounts))
 
-    primary_storage_account = list(filter(lambda s: 'Primary' in s.type.value, 
ams.storage_accounts))[0]
+    primary_storage_account = list(filter(lambda s: 'Primary' in s.type, 
ams.storage_accounts))[0]
     storage_accounts_filtered.append(primary_storage_account)
 
     return create_or_update_mediaservice(client, resource_group_name, 
account_name, storage_accounts_filtered,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/account_filter.py
 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/account_filter.py
--- 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/account_filter.py
  2019-02-12 03:05:13.000000000 +0100
+++ 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/account_filter.py
  2019-06-13 23:17:46.000000000 +0200
@@ -14,13 +14,12 @@
 
 def create_account_filter(client, account_name, resource_group_name, 
filter_name, start_timestamp=None,
                           end_timestamp=None, 
presentation_window_duration=None, live_backoff_duration=None,
-                          timescale=None, force_end_timestamp=False, 
bitrate=None, tracks=None):
+                          timescale=None, force_end_timestamp=False, 
bitrate=None, first_quality=None, tracks=None):
 
-    first_quality = None
     presentation_time_range = None
 
-    if bitrate is not None:
-        first_quality = FirstQuality(bitrate=bitrate)
+    if first_quality or bitrate:
+        first_quality = FirstQuality(bitrate=first_quality or bitrate)
 
     if any([start_timestamp, end_timestamp, presentation_window_duration,
             live_backoff_duration, timescale]):
@@ -43,13 +42,13 @@
 
 def update_account_filter(instance, start_timestamp=None, end_timestamp=None,
                           presentation_window_duration=None, 
live_backoff_duration=None,
-                          timescale=None, bitrate=None, tracks=None, 
force_end_timestamp=None):
+                          timescale=None, bitrate=None, first_quality=None, 
tracks=None, force_end_timestamp=None):
 
     if not instance:
         raise CLIError('The account filter resource was not found.')
 
-    if bitrate:
-        instance.first_quality = FirstQuality(bitrate=bitrate)
+    if first_quality or bitrate:
+        instance.first_quality = FirstQuality(bitrate=first_quality or bitrate)
 
     if any([start_timestamp, end_timestamp, presentation_window_duration,
             live_backoff_duration, timescale, force_end_timestamp is not 
None]):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/asset_filter.py
 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/asset_filter.py
--- 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/asset_filter.py
    2019-02-12 03:05:13.000000000 +0100
+++ 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/asset_filter.py
    2019-06-13 23:17:46.000000000 +0200
@@ -13,13 +13,14 @@
 
 def create_asset_filter(client, account_name, resource_group_name, asset_name, 
filter_name,
                         start_timestamp=None, end_timestamp=None, 
presentation_window_duration=None,
-                        live_backoff_duration=None, timescale=None, 
force_end_timestamp=False, bitrate=None,
+                        live_backoff_duration=None, timescale=None, 
force_end_timestamp=False,
+                        bitrate=None, first_quality=None,
                         tracks=None):
-    first_quality = None
+
     presentation_time_range = None
 
-    if bitrate:
-        first_quality = FirstQuality(bitrate=bitrate)
+    if first_quality or bitrate:
+        first_quality = FirstQuality(bitrate=first_quality or bitrate)
 
     if any([start_timestamp, end_timestamp, presentation_window_duration,
             live_backoff_duration, timescale]):
@@ -42,13 +43,14 @@
 
 
 def update_asset_filter(instance, start_timestamp=None, end_timestamp=None, 
presentation_window_duration=None,
-                        live_backoff_duration=None, timescale=None, 
bitrate=None,
+                        live_backoff_duration=None, timescale=None, 
bitrate=None, first_quality=None,
                         tracks=None, force_end_timestamp=None):
+
     if not instance:
         raise CLIError('The asset filter resource was not found.')
 
-    if bitrate:
-        instance.first_quality = FirstQuality(bitrate=bitrate)
+    if first_quality or bitrate:
+        instance.first_quality = FirstQuality(bitrate=first_quality or bitrate)
 
     if any([start_timestamp, end_timestamp, presentation_window_duration,
             live_backoff_duration, timescale, force_end_timestamp is not 
None]):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/content_key_policy.py
 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/content_key_policy.py
--- 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/content_key_policy.py
      2019-02-12 03:05:13.000000000 +0100
+++ 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/content_key_policy.py
      2019-06-13 23:17:46.000000000 +0200
@@ -403,7 +403,10 @@
 
     def __get_license(lic):
         import dateutil.parser
-        expiration_date = dateutil.parser.parse(lic.get('expirationDate'))
+        if lic.get('expirationDate') is None:
+            expiration_date = None
+        else:
+            expiration_date = dateutil.parser.parse(lic.get('expirationDate'))
         return ContentKeyPolicyPlayReadyLicense(
             allow_test_devices=lic.get('allowTestDevices'),
             begin_date=lic.get('beginDate'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/job.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/job.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/job.py     
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/job.py     
2019-06-13 23:17:46.000000000 +0200
@@ -15,11 +15,11 @@
     if input_asset_name:
         job_input = JobInputAsset(asset_name=input_asset_name, files=files, 
label=label)
     else:
-        if base_uri is None and files is None:
+        if base_uri is not None and files is not None:
+            job_input = JobInputHttp(files=files, base_uri=base_uri, 
label=label)
+        else:
             raise CLIError("Missing required arguments.\nEither 
--input-asset-name, "
                            "or both --files or --base-uri must be specified.")
-        else:
-            job_input = JobInputHttp(files=files, base_uri=base_uri, 
label=label)
 
     job_outputs = output_assets
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/sp.py 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/sp.py
--- old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/sp.py      
2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/sp.py      
2019-06-13 23:17:46.000000000 +0200
@@ -14,8 +14,8 @@
 from knack.log import get_logger
 from msrest.serialization import TZ_UTC
 from msrestazure.azure_exceptions import CloudError
-from azure.graphrbac.models.graph_error import GraphErrorException
 from azure.graphrbac.models import (ApplicationCreateParameters,
+                                    GraphErrorException,
                                     ServicePrincipalCreateParameters)
 
 from azure.cli.command_modules.ams._client_factory import 
(_graph_client_factory, _auth_client_factory)
@@ -100,8 +100,10 @@
 def _get_displayable_name(graph_object):
     if getattr(graph_object, 'user_principal_name', None):
         return graph_object.user_principal_name
-    elif getattr(graph_object, 'service_principal_names', None):
+
+    if getattr(graph_object, 'service_principal_names', None):
         return graph_object.service_principal_names[0]
+
     return graph_object.display_name or ''
 
 
@@ -179,9 +181,11 @@
                 definitions_client.config.subscription_id, role)
         if not role_id:  # retrieve role id
             role_defs = list(definitions_client.list(scope, "roleName eq 
'{}'".format(role)))
+
             if not role_defs:
                 raise CLIError("Role '{}' doesn't exist.".format(role))
-            elif len(role_defs) > 1:
+
+            if len(role_defs) > 1:
                 ids = [r.id for r in role_defs]
                 err = "More than one role matches the given name '{}'. Please 
pick a value from '{}'"
                 raise CLIError(err.format(role, ids))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/streaming_locator.py
 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/streaming_locator.py
--- 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/streaming_locator.py
       2019-02-12 03:05:13.000000000 +0100
+++ 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/streaming_locator.py
       2019-06-13 23:17:46.000000000 +0200
@@ -12,7 +12,8 @@
                              streaming_locator_name, streaming_policy_name,
                              asset_name, start_time=None, 
default_content_key_policy_name=None,
                              end_time=None, streaming_locator_id=None, 
alternative_media_id=None,
-                             content_keys=None):
+                             content_keys=None,
+                             filters=None):
     from azure.mgmt.media.models import StreamingLocator
 
     if not _valid_content_keys(content_keys):
@@ -26,7 +27,8 @@
                                          
default_content_key_policy_name=default_content_key_policy_name,
                                          
streaming_locator_id=streaming_locator_id,
                                          
alternative_media_id=alternative_media_id,
-                                         content_keys=content_keys)
+                                         content_keys=content_keys,
+                                         filters=filters)
 
     return client.create(resource_group_name, account_name, 
streaming_locator_name, streaming_locator)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/streaming_policy.py
 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/streaming_policy.py
--- 
old/azure-cli-ams-0.4.1/azure/cli/command_modules/ams/operations/streaming_policy.py
        2019-02-12 03:05:13.000000000 +0100
+++ 
new/azure-cli-ams-0.4.7/azure/cli/command_modules/ams/operations/streaming_policy.py
        2019-06-13 23:17:46.000000000 +0200
@@ -17,50 +17,84 @@
 from azure.cli.command_modules.ams._client_factory import 
get_streaming_policies_client
 
 
-def create_streaming_policy(cmd, resource_group_name, account_name,  # pylint: 
disable=too-many-locals
-                            streaming_policy_name, 
no_encryption_protocols=None,
+def create_streaming_policy(cmd,  # pylint: disable=too-many-locals
+                            resource_group_name,
+                            account_name,
+                            streaming_policy_name,
+                            no_encryption_protocols=None,
                             default_content_key_policy_name=None,
-                            cenc_default_key_label=None, 
cenc_default_key_policy_name=None,
-                            cenc_clear_tracks=None, 
cenc_key_to_track_mappings=None,
-                            cenc_play_ready_template=None, 
cenc_play_ready_attributes=None,
-                            cenc_widevine_template=None, cenc_protocols=None,
-                            envelope_clear_tracks=None, 
envelope_key_to_track_mappings=None,
-                            envelope_template=None,
-                            envelope_default_key_label=None, 
envelope_default_key_policy_name=None,
-                            envelope_protocols=None, cbcs_protocols=None,
-                            cbcs_default_key_label=None, 
cbcs_clear_tracks=None,
+                            cbcs_clear_tracks=None,
+                            cbcs_default_key_label=None,
                             cbcs_default_key_policy_name=None,
-                            cbcs_key_to_track_mappings=None, 
cbcs_play_ready_template=None,
-                            cbcs_play_ready_attributes=None, 
cbcs_widevine_template=None,
+                            cbcs_key_to_track_mappings=None,
+                            cbcs_protocols=None,
+                            cbcs_play_ready_template=None,
+                            cbcs_play_ready_attributes=None,
+                            cbcs_widevine_template=None,
                             cbcs_fair_play_template=None,
-                            cbcs_fair_play_allow_persistent_license=False):
+                            cbcs_fair_play_allow_persistent_license=False,
+                            cenc_default_key_label=None,
+                            cenc_default_key_policy_name=None,
+                            cenc_clear_tracks=None,
+                            cenc_key_to_track_mappings=None,
+                            cenc_disable_play_ready=None,
+                            cenc_play_ready_template=None,
+                            cenc_play_ready_attributes=None,
+                            cenc_disable_widevine=None,
+                            cenc_widevine_template=None,
+                            cenc_protocols=None,
+                            envelope_clear_tracks=None,
+                            envelope_default_key_label=None,
+                            envelope_default_key_policy_name=None,
+                            envelope_key_to_track_mappings=None,
+                            envelope_protocols=None,
+                            envelope_template=None):
 
     envelope_encryption = None
     if any([envelope_protocols, envelope_clear_tracks, envelope_template,
             envelope_default_key_label, envelope_default_key_policy_name, 
envelope_key_to_track_mappings]):
-        envelope_encryption = _envelope_encryption_factory(envelope_protocols, 
envelope_clear_tracks,
-                                                           envelope_template,
-                                                           
envelope_default_key_label, envelope_default_key_policy_name,
-                                                           
envelope_key_to_track_mappings)
+        envelope_encryption = 
_envelope_encryption_factory(envelope_clear_tracks,
+                                                           
envelope_default_key_label,
+                                                           
envelope_default_key_policy_name,
+                                                           
envelope_key_to_track_mappings,
+                                                           envelope_protocols,
+                                                           envelope_template)
 
     common_encryption_cenc = None
     if any([cenc_protocols, cenc_widevine_template, cenc_default_key_label, 
cenc_default_key_policy_name,
             cenc_key_to_track_mappings, cenc_clear_tracks, 
cenc_play_ready_template, cenc_play_ready_attributes]):
-        common_encryption_cenc = _cenc_encryption_factory(cenc_protocols, 
cenc_widevine_template,
-                                                          
cenc_default_key_label, cenc_default_key_policy_name,
-                                                          
cenc_key_to_track_mappings, cenc_clear_tracks,
-                                                          
cenc_play_ready_template, cenc_play_ready_attributes)
+        common_encryption_cenc = _cenc_encryption_factory(cenc_clear_tracks,
+                                                          
cenc_default_key_label,
+                                                          
cenc_default_key_policy_name,
+                                                          
cenc_disable_play_ready,
+                                                          
cenc_disable_widevine,
+                                                          
cenc_key_to_track_mappings,
+                                                          
cenc_play_ready_attributes,
+                                                          
cenc_play_ready_template,
+                                                          cenc_protocols,
+                                                          
cenc_widevine_template)
 
     common_encryption_cbcs = None
-    if any([cbcs_protocols, cbcs_widevine_template, cbcs_default_key_label, 
cbcs_default_key_policy_name,
-            cbcs_key_to_track_mappings, cbcs_clear_tracks, 
cbcs_play_ready_template, cbcs_play_ready_attributes,
-            cbcs_fair_play_template, cbcs_fair_play_allow_persistent_license]):
-        common_encryption_cbcs = _cbcs_encryption_factory(cbcs_protocols, 
cbcs_widevine_template,
-                                                          
cbcs_default_key_label, cbcs_default_key_policy_name,
-                                                          
cbcs_key_to_track_mappings, cbcs_clear_tracks,
-                                                          
cbcs_play_ready_template, cbcs_play_ready_attributes,
+    if any([cbcs_clear_tracks,
+            cbcs_default_key_label,
+            cbcs_default_key_policy_name,
+            cbcs_fair_play_template,
+            cbcs_fair_play_allow_persistent_license,
+            cbcs_key_to_track_mappings,
+            cbcs_play_ready_template,
+            cbcs_play_ready_attributes,
+            cbcs_widevine_template,
+            cbcs_protocols]):
+        common_encryption_cbcs = _cbcs_encryption_factory(cbcs_clear_tracks,
+                                                          
cbcs_default_key_label,
+                                                          
cbcs_default_key_policy_name,
                                                           
cbcs_fair_play_template,
-                                                          
cbcs_fair_play_allow_persistent_license)
+                                                          
cbcs_fair_play_allow_persistent_license,
+                                                          
cbcs_key_to_track_mappings,
+                                                          
cbcs_play_ready_template,
+                                                          
cbcs_play_ready_attributes,
+                                                          
cbcs_widevine_template,
+                                                          cbcs_protocols)
 
     no_encryption = None
     if not any([envelope_encryption, common_encryption_cenc, 
common_encryption_cbcs]) or no_encryption_protocols:
@@ -81,22 +115,38 @@
     return NoEncryption(enabled_protocols=enabled_protocols)
 
 
-def _cenc_encryption_factory(cenc_protocols, cenc_widevine_template,
-                             cenc_default_key_label, 
cenc_default_key_policy_name,
-                             cenc_key_to_track_mappings, cenc_clear_tracks,
-                             cenc_play_ready_template, 
cenc_play_ready_attributes):
+def _cenc_encryption_factory(cenc_clear_tracks,
+                             cenc_default_key_label,
+                             cenc_default_key_policy_name,
+                             cenc_disable_play_ready,
+                             cenc_disable_widevine,
+                             cenc_key_to_track_mappings,
+                             cenc_play_ready_attributes,
+                             cenc_play_ready_template,
+                             cenc_protocols,
+                             cenc_widevine_template):
     cenc_enabled_protocols = _build_enabled_protocols_object(cenc_protocols)
 
+    if cenc_disable_play_ready and cenc_disable_widevine:
+        message = '--cenc-disable-play-ready and --cenc-disable-widevine 
cannot both be specified'
+        raise ValueError(message)
+
     cenc_play_ready_config = None
-    if cenc_play_ready_template or cenc_play_ready_attributes:
-        cenc_play_ready_config = StreamingPolicyPlayReadyConfiguration(
-            custom_license_acquisition_url_template=cenc_play_ready_template,
-            play_ready_custom_attributes=cenc_play_ready_attributes)
+    if not cenc_disable_play_ready:
+        if cenc_play_ready_template or cenc_play_ready_attributes:
+            cenc_play_ready_config = StreamingPolicyPlayReadyConfiguration(
+                
custom_license_acquisition_url_template=cenc_play_ready_template,
+                play_ready_custom_attributes=cenc_play_ready_attributes)
+        else:
+            cenc_play_ready_config = StreamingPolicyPlayReadyConfiguration()
 
     cenc_widevine_config = None
-    if cenc_widevine_template:
-        cenc_widevine_config = StreamingPolicyWidevineConfiguration(
-            custom_license_acquisition_url_template=cenc_widevine_template)
+    if not cenc_disable_widevine:
+        if cenc_widevine_template:
+            cenc_widevine_config = StreamingPolicyWidevineConfiguration(
+                custom_license_acquisition_url_template=cenc_widevine_template)
+        else:
+            cenc_widevine_config = StreamingPolicyWidevineConfiguration()
 
     key_to_track_mappings = 
_parse_key_to_track_mappings_json(cenc_key_to_track_mappings)
     cenc_content_keys = 
StreamingPolicyContentKeys(default_key=DefaultKey(label=cenc_default_key_label,
@@ -110,12 +160,16 @@
                                                          
widevine=cenc_widevine_config))
 
 
-def _cbcs_encryption_factory(cbcs_protocols, cbcs_widevine_template,
-                             cbcs_default_key_label, 
cbcs_default_key_policy_name,
-                             cbcs_key_to_track_mappings, cbcs_clear_tracks,
-                             cbcs_play_ready_template, 
cbcs_play_ready_attributes,
+def _cbcs_encryption_factory(cbcs_clear_tracks,
+                             cbcs_default_key_label,
+                             cbcs_default_key_policy_name,
                              cbcs_fair_play_template,
-                             cbcs_fair_play_allow_persistent_license):
+                             cbcs_fair_play_allow_persistent_license,
+                             cbcs_key_to_track_mappings,
+                             cbcs_play_ready_template,
+                             cbcs_play_ready_attributes,
+                             cbcs_widevine_template,
+                             cbcs_protocols):
     cbcs_enabled_protocols = _build_enabled_protocols_object(cbcs_protocols)
 
     cbcs_play_ready_config = None
@@ -129,11 +183,9 @@
         cbcs_widevine_config = StreamingPolicyWidevineConfiguration(
             custom_license_acquisition_url_template=cbcs_widevine_template)
 
-    cbcs_fair_play_config = None
-    if cbcs_fair_play_allow_persistent_license or cbcs_fair_play_template:
-        cbcs_fair_play_config = StreamingPolicyFairPlayConfiguration(
-            allow_persistent_license=cbcs_fair_play_allow_persistent_license,
-            custom_license_acquisition_url_template=cbcs_fair_play_template)
+    cbcs_fair_play_config = StreamingPolicyFairPlayConfiguration(
+        allow_persistent_license=cbcs_fair_play_allow_persistent_license,
+        custom_license_acquisition_url_template=cbcs_fair_play_template)
 
     cbcs_content_keys = StreamingPolicyContentKeys(
         default_key=DefaultKey(label=cbcs_default_key_label,
@@ -191,10 +243,12 @@
                             smooth_streaming='SmoothStreaming' in protocols)
 
 
-def _envelope_encryption_factory(envelope_protocols, envelope_clear_tracks,
-                                 envelope_template,
-                                 envelope_default_key_label, 
envelope_default_key_policy_name,
-                                 envelope_key_to_track_mappings):
+def _envelope_encryption_factory(envelope_clear_tracks,
+                                 envelope_default_key_label,
+                                 envelope_default_key_policy_name,
+                                 envelope_key_to_track_mappings,
+                                 envelope_protocols,
+                                 envelope_template):
 
     envelope_content_keys = StreamingPolicyContentKeys(
         default_key=DefaultKey(label=envelope_default_key_label,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-ams-0.4.1/azure_cli_ams.egg-info/PKG-INFO 
new/azure-cli-ams-0.4.7/azure_cli_ams.egg-info/PKG-INFO
--- old/azure-cli-ams-0.4.1/azure_cli_ams.egg-info/PKG-INFO     2019-02-12 
03:05:55.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure_cli_ams.egg-info/PKG-INFO     2019-06-13 
23:18:01.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: azure-cli-ams
-Version: 0.4.1
+Version: 0.4.7
 Summary: Microsoft Azure Command-Line Tools AMS Command Module
 Home-page: https://github.com/Azure/azure-cli
 Author: Microsoft Corporation
@@ -19,6 +19,29 @@
         
         Release History
         ===============
+        0.4.7
+        +++++
+        * Return ISO 8601 time strings for archive-window-length and 
key-frame-interval-duration.
+        
+        0.4.6
+        +++++
+        * Minor fixes.
+        
+        0.4.5
+        +++++
+        * Bug fix for asset and account filters update.
+        
+        0.4.4
+        +++++
+        * The `account-filter` and `asset-filter` parameter `--bitrate` has 
been deprecated and will be removed in a future release. 
+          It has been renamed to `--first-quality`.
+        * New encryption parameters support in `ams streaming-policy create` 
command added.
+        * New paramter `filters` added to ams streaming-locator create.
+        
+        0.4.3
+        +++++
+        * Minor fixes.
+        
         0.4.1
         +++++
         * ams streaming-endpoint [start | stop | create | update] : added 
'wait' command
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/azure-cli-ams-0.4.1/azure_cli_ams.egg-info/requires.txt 
new/azure-cli-ams-0.4.7/azure_cli_ams.egg-info/requires.txt
--- old/azure-cli-ams-0.4.1/azure_cli_ams.egg-info/requires.txt 2019-02-12 
03:05:55.000000000 +0100
+++ new/azure-cli-ams-0.4.7/azure_cli_ams.egg-info/requires.txt 2019-06-13 
23:18:01.000000000 +0200
@@ -1,3 +1,3 @@
 azure-cli-core
-azure-mgmt-media==1.0.1
-azure-graphrbac==0.53.0
+azure-mgmt-media==1.1.1
+azure-graphrbac==0.60.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/azure-cli-ams-0.4.1/setup.py 
new/azure-cli-ams-0.4.7/setup.py
--- old/azure-cli-ams-0.4.1/setup.py    2019-02-12 03:05:13.000000000 +0100
+++ new/azure-cli-ams-0.4.7/setup.py    2019-06-13 23:17:46.000000000 +0200
@@ -14,7 +14,7 @@
     logger.warn("Wheel is not available, disabling bdist_wheel hook")
     cmdclass = {}
 
-VERSION = "0.4.1"
+VERSION = "0.4.7"
 
 # The full list of classifiers is available at
 # https://pypi.python.org/pypi?%3Aaction=list_classifiers
@@ -33,8 +33,8 @@
 
 DEPENDENCIES = [
     'azure-cli-core',
-    'azure-mgmt-media==1.0.1',
-    'azure-graphrbac==0.53.0'
+    'azure-mgmt-media==1.1.1',
+    'azure-graphrbac==0.60.0'
 ]
 
 with open('README.rst', 'r', encoding='utf-8') as f:


Reply via email to