Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Advisor Module Updates #5334

Merged
merged 24 commits into from
Feb 27, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7f18c4a
Updates for GA release.
Prasanna-Padmanabhan Jan 18, 2018
70e3f79
Merge remote-tracking branch 'upstream/dev' into dev
Prasanna-Padmanabhan Jan 18, 2018
77a0c2e
Addressing PR feedback:
Prasanna-Padmanabhan Jan 23, 2018
c6e7d08
Update history with details of the changes.
Prasanna-Padmanabhan Jan 24, 2018
ca47a9e
Adding generic update and show command.
Prasanna-Padmanabhan Feb 9, 2018
6c8c2ef
Addressing review feedback.
Prasanna-Padmanabhan Feb 13, 2018
d61ea43
Update SDK package version.
Prasanna-Padmanabhan Feb 13, 2018
bbe23bb
Merge remote-tracking branch 'upstream/dev' into dev
Prasanna-Padmanabhan Feb 13, 2018
64369a5
Addressing review feedback.
Prasanna-Padmanabhan Feb 16, 2018
6e17e92
Fix indentation errors.
Prasanna-Padmanabhan Feb 16, 2018
3b87d14
Merge pull request #2 from Azure/dev
Prasanna-Padmanabhan Feb 20, 2018
196c6b1
Merge pull request #3 from Azure/dev
Prasanna-Padmanabhan Feb 24, 2018
ae53cce
Add support for ids.
Prasanna-Padmanabhan Feb 24, 2018
05b6777
Updates for GA release.
Prasanna-Padmanabhan Jan 18, 2018
fa156b8
Addressing PR feedback:
Prasanna-Padmanabhan Jan 23, 2018
bd00ec3
Update history with details of the changes.
Prasanna-Padmanabhan Jan 24, 2018
19d3771
Adding generic update and show command.
Prasanna-Padmanabhan Feb 9, 2018
1e4e723
Addressing review feedback.
Prasanna-Padmanabhan Feb 13, 2018
5484ea9
Update SDK package version.
Prasanna-Padmanabhan Feb 13, 2018
917d3c7
Addressing review feedback.
Prasanna-Padmanabhan Feb 16, 2018
be1ab4a
Fix indentation errors.
Prasanna-Padmanabhan Feb 16, 2018
24cc6b9
Add support for ids.
Prasanna-Padmanabhan Feb 24, 2018
e653d72
Merge branch 'dev' of https://github.com/Prasanna-Padmanabhan/azure-c…
Prasanna-Padmanabhan Feb 26, 2018
710f4c4
Fix test failures.
Prasanna-Padmanabhan Feb 26, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/command_modules/azure-cli-advisor/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
Release History
===============

0.5.0
++++++
* BC: `advisor configuration get` has been renamed to `advisor configuration list`.
* BC: `advisor configuration set` has been renamed to `advisor configuration update`.
* BC: `advisor recommendation generate` has been removed.
* `advisor recommendation list` has a new --refresh parameter.
* `advisor recommendation show` has been added.

0.1.2
+++++
* Minor fixes.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ def cf_advisor(cli_ctx, **_):
return get_mgmt_service_client(cli_ctx, AdvisorManagementClient)


def advisor_mgmt_client_factory(cli_ctx, kwargs):
return cf_advisor(cli_ctx, **kwargs)
def advisor_mgmt_client_factory(cli_ctx, _):
return cf_advisor(cli_ctx)


def recommendations_mgmt_client_factory(cli_ctx, kwargs):
return cf_advisor(cli_ctx, **kwargs).recommendations
def recommendations_mgmt_client_factory(cli_ctx, _):
return cf_advisor(cli_ctx).recommendations


def suppressions_mgmt_client_factory(cli_ctx, kwargs):
return cf_advisor(cli_ctx, **kwargs).suppressions
def suppressions_mgmt_client_factory(cli_ctx, _):
return cf_advisor(cli_ctx).suppressions


def configurations_mgmt_client_factory(cli_ctx, kwargs):
return cf_advisor(cli_ctx, **kwargs).configurations
def configurations_mgmt_client_factory(cli_ctx, _):
return cf_advisor(cli_ctx).configurations
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

helps['advisor'] = """
type: group
short-summary: (PREVIEW) Manage Azure Advisor.
short-summary: Manage Azure Advisor.
"""

helps['advisor configuration'] = """
Expand All @@ -20,19 +20,26 @@
short-summary: Review Azure Advisor recommendations.
"""

helps['advisor configuration get'] = """
helps['advisor configuration list'] = """
type: command
short-summary: Get Azure Advisor configuration.
short-summary: List Azure Advisor configuration for the entire subscription.
"""

helps['advisor configuration set'] = """
helps['advisor configuration show'] = """
type: command
short-summary: Set Azure Advisor configuration.
short-summary: Show Azure Advisor configuration for the given subscription or resource group.
"""

helps['advisor recommendation generate'] = """
helps['advisor configuration update'] = """
type: command
short-summary: Generate Azure Advisor recommendations.
short-summary: Update Azure Advisor configuration.
examples:
- name: Update low CPU threshold for a given subscription to 20%.
text: >
az advisor configuration update -l 20
- name: Exclude a given resource group from recommendation generation.
text: >
az advisor configuration update -g myRG -e
"""

helps['advisor recommendation list'] = """
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,49 @@

from knack.arguments import CLIArgumentType

from azure.cli.core.commands.parameters import get_enum_type
from azure.cli.core.commands.parameters import \
(get_enum_type,
get_resource_name_completion_list)

from ._validators import validate_include_or_exclude, validate_ids_or_resource_group
from ._validators import \
(validate_include_or_exclude,
validate_ids_or_names,
validate_ids_or_resource_group,
validate_threshold_or_resource_group)


def load_arguments(self, _):
ids_arg_type = CLIArgumentType(nargs='+', options_list=['--ids'],
help='One or more resource IDs (space-delimited). If provided, no other '
'"Resource Id" arguments should be specified.')

name_arg_type = CLIArgumentType(options_list=['--name', '-n'],
help='The name of the recommendation as output by the list command.',
completer=get_resource_name_completion_list('Microsoft.Advisor/recommendations'))

with self.argument_context('advisor recommendation list') as c:
c.argument('ids', ids_arg_type, validator=validate_ids_or_resource_group)
c.argument('category', options_list=['--category', '-c'], help='Name of recommendation category.',
arg_type=get_enum_type(['Cost', 'HighAvailability', 'Performance', 'Security']))
c.argument('refresh', options_list=['--refresh', '-r'], action='store_true',
help='Generate new recommendations.')

with self.argument_context('advisor recommendation disable') as c:
c.argument('ids', ids_arg_type)
c.argument('ids', ids_arg_type, arg_group="Resource Id", validator=validate_ids_or_names)
c.argument('recommendation_name', name_arg_type, arg_group="Resource Id")
c.argument('resource_group_name', arg_group="Resource Id")
c.argument('days', options_list=['--days', '-d'], type=int,
help='Number of days to disable. If not specified, the recommendation is disabled forever.')

with self.argument_context('advisor recommendation enable') as c:
c.argument('ids', ids_arg_type)
c.argument('ids', ids_arg_type, arg_group="Resource Id", validator=validate_ids_or_names)
c.argument('resource_group_name', arg_group="Resource Id")
c.argument('recommendation_name', name_arg_type, arg_group="Resource Id")

with self.argument_context('advisor configuration set') as c:
with self.argument_context('advisor configuration update') as c:
c.argument('low_cpu_threshold', options_list=['--low-cpu-threshold', '-l'],
help='Value for low CPU threshold.', arg_type=get_enum_type(['5', '10', '15', '20']))
help='Value for low CPU threshold.', arg_type=get_enum_type(['5', '10', '15', '20']),
validator=validate_threshold_or_resource_group)
c.argument('exclude', options_list=['--exclude', '-e'], action='store_true',
help='Exclude from recommendation generation.')
c.argument('include', options_list=['--include', '-i'], action='store_true',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ def validate_include_or_exclude(namespace):
raise CLIError('usage error: --include | --exclude')


def validate_ids_or_names(namespace):
if namespace.ids and (namespace.recommendation_name or namespace.resource_group_name):
raise CLIError('usage error: --ids | --name [--resource-group]')


def validate_ids_or_resource_group(namespace):
if namespace.ids and namespace.resource_group_name:
raise CLIError('usage error: --ids | --resource-group')


def validate_threshold_or_resource_group(namespace):
if namespace.low_cpu_threshold and namespace.resource_group_name:
raise CLIError('usage error: --low-cpu-threshold | --resource-group')
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,28 @@
from azure.cli.command_modules.advisor._client_factory import \
(advisor_mgmt_client_factory,
recommendations_mgmt_client_factory,
suppressions_mgmt_client_factory,
configurations_mgmt_client_factory)


def load_command_table(self, _):
from azure.cli.core.commands import CliCommandType
advisor_custom = CliCommandType(operations_tmpl='azure.cli.command_modules.advisor.custom#{}')

with self.command_group('advisor recommendation') as g:
g.custom_command('generate', 'cli_advisor_generate_recommendations',
client_factory=recommendations_mgmt_client_factory)
g.custom_command('list', 'cli_advisor_list_recommendations',
g.custom_command('list', 'list_recommendations',
client_factory=recommendations_mgmt_client_factory)
g.custom_command('disable', 'cli_advisor_disable_recommendations',
client_factory=suppressions_mgmt_client_factory)
g.custom_command('enable', 'cli_advisor_enable_recommendations',
g.custom_command('disable', 'disable_recommendations',
client_factory=advisor_mgmt_client_factory)
g.custom_command('enable', 'enable_recommendations',
client_factory=advisor_mgmt_client_factory)

with self.command_group('advisor configuration', client_factory=configurations_mgmt_client_factory) as g:
g.custom_command('get', 'cli_advisor_get_configurations')
g.custom_command('set', 'cli_advisor_set_configurations')
g.custom_command('list', 'list_configuration')
g.custom_command('show', 'show_configuration')
g.generic_update_command('update',
getter_name='show_configuration',
getter_type=advisor_custom,
setter_name='_set_configuration',
setter_type=advisor_custom,
custom_func_name='update_configuration',
custom_func_type=advisor_custom)
Loading