From f03cb94a2e3998b9bda1ea53df955804e5fb5732 Mon Sep 17 00:00:00 2001 From: Johan Stenberg Date: Tue, 1 Mar 2016 17:43:13 -0800 Subject: [PATCH 1/4] Updated per code review comments --- src/azure/cli/commands/_auto_command.py | 50 +++- src/azure/cli/commands/network.py | 359 ++++++++++++------------ src/azure/cli/commands/vm.py | 203 +++++++------- 3 files changed, 326 insertions(+), 286 deletions(-) diff --git a/src/azure/cli/commands/_auto_command.py b/src/azure/cli/commands/_auto_command.py index e79f8f28e2d..9f87b1b051e 100644 --- a/src/azure/cli/commands/_auto_command.py +++ b/src/azure/cli/commands/_auto_command.py @@ -1,7 +1,37 @@ import inspect +import sys +import time from msrest import Serializer -from ..commands import command, description, option +from msrest.exceptions import ClientException from azure.cli._argparse import IncorrectUsageError +from ..commands import command, description, option + +class LongRunningOperation(object): + + progress_file = sys.stderr + + def __init__(self, start_msg='', finish_msg='', poll_interval_ms=1000.0): + self.start_msg = start_msg + self.finish_msg = finish_msg + self.poll_interval_ms = poll_interval_ms + + def __call__(self, poller): + print(self.start_msg, file=self.progress_file) + + succeeded = False + try: + while not poller.done(): + if self.progress_file: + print('.', end='', flush=True, file=self.progress_file) + time.sleep(self.poll_interval_ms / 1000.0) + result = poller.result() + succeeded = True + return result + finally: + # Ensure that we get a newline after the dots... + if self.progress_file: + print(file=self.progress_file) + print(self.finish_msg if succeeded else '', file=self.progress_file) def _decorate_command(name, func): return command(name)(func) @@ -12,19 +42,27 @@ def _decorate_description(desc, func): def _decorate_option(spec, descr, func): return option(spec, descr)(func) -def _make_func(client_factory, member_name, return_type_name, unbound_func): +def _make_func(client_factory, member_name, return_type_or_func, unbound_func): def call_client(args, unexpected): #pylint: disable=unused-argument client = client_factory() ops_instance = getattr(client, member_name) try: result = unbound_func(ops_instance, **args) - if not return_type_name: + if not return_type_or_func: return {} - return Serializer().serialize_data(result, return_type_name) + if callable(return_type_or_func): + return return_type_or_func(result) + if isinstance(return_type_or_func, str): + return Serializer().serialize_data(result, return_type_or_func) except TypeError as exception: # TODO: Evaluate required/missing parameters and provide specific # usage for missing params... raise IncorrectUsageError(exception) + except ClientException as client_exception: + # TODO: Better error handling for cloud exceptions... + message = getattr(client_exception, 'message', client_exception) + print(message, file=sys.stderr) + return call_client @@ -38,9 +76,9 @@ def _option_description(operation, arg): EXCLUDED_PARAMS = frozenset(['self', 'raw', 'custom_headers', 'operation_config']) -def operation_builder(package_name, resource_type, member_name, client_type, operations): +def build_operation(package_name, resource_type, member_name, client_type, operations): for operation, return_type_name in operations: - opname = operation.__name__ + opname = operation.__name__.replace('_', '-') func = _make_func(client_type, member_name, return_type_name, operation) func = _decorate_command(' '.join([package_name, resource_type, opname]), func) diff --git a/src/azure/cli/commands/network.py b/src/azure/cli/commands/network.py index 08fff22a772..39f0615eb68 100644 --- a/src/azure/cli/commands/network.py +++ b/src/azure/cli/commands/network.py @@ -1,3 +1,4 @@ +from .._locale import L from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration from azure.mgmt.network.operations import (ApplicationGatewaysOperations, ExpressRouteCircuitAuthorizationsOperations, @@ -19,223 +20,223 @@ VirtualNetworksOperations) from ._command_creation import get_service_client -from ..commands import _auto_command +from ..commands._auto_command import build_operation, LongRunningOperation def _network_client_factory(): return get_service_client(NetworkManagementClient, NetworkManagementClientConfiguration) # pylint: disable=line-too-long # Application gateways -_auto_command.operation_builder("network", - "appgateway", - "application_gateways", - _network_client_factory, - [ - (ApplicationGatewaysOperations.delete, None), - (ApplicationGatewaysOperations.get, 'ApplicationGateway'), - (ApplicationGatewaysOperations.list, '[ApplicationGateway]'), - (ApplicationGatewaysOperations.list_all, '[ApplicationGateway]'), - (ApplicationGatewaysOperations.start, None), - (ApplicationGatewaysOperations.stop, None), - ]) +build_operation("network", + "appgateway", + "application_gateways", + _network_client_factory, + [ + (ApplicationGatewaysOperations.delete, None), + (ApplicationGatewaysOperations.get, 'ApplicationGateway'), + (ApplicationGatewaysOperations.list, '[ApplicationGateway]'), + (ApplicationGatewaysOperations.list_all, '[ApplicationGateway]'), + (ApplicationGatewaysOperations.start, None), + (ApplicationGatewaysOperations.stop, LongRunningOperation(L('Starting application gateway'), L('Application gateway started'))), + ]) # ExpressRouteCircuitAuthorizationsOperations -_auto_command.operation_builder("network", - "expressroutecircuitauth", - "express_route_circuit_authorizations", - _network_client_factory, - [ - (ExpressRouteCircuitAuthorizationsOperations.delete, None), - (ExpressRouteCircuitAuthorizationsOperations.get, 'ExpressRouteCircuitAuthorization'), - (ExpressRouteCircuitAuthorizationsOperations.list, '[ExpressRouteCircuitAuthorization]'), - ]) +build_operation("network", + "expressroutecircuitauth", + "express_route_circuit_authorizations", + _network_client_factory, + [ + (ExpressRouteCircuitAuthorizationsOperations.delete, None), + (ExpressRouteCircuitAuthorizationsOperations.get, 'ExpressRouteCircuitAuthorization'), + (ExpressRouteCircuitAuthorizationsOperations.list, '[ExpressRouteCircuitAuthorization]'), + ]) # ExpressRouteCircuitPeeringsOperations -_auto_command.operation_builder("network", - "expressroutecircuitpeering", - "express_route_circuit_peerings", - _network_client_factory, - [ - (ExpressRouteCircuitPeeringsOperations.delete, None), - (ExpressRouteCircuitPeeringsOperations.get, 'ExpressRouteCircuitPeering'), - (ExpressRouteCircuitPeeringsOperations.list, '[ExpressRouteCircuitPeering]'), - ]) +build_operation("network", + "expressroutecircuitpeering", + "express_route_circuit_peerings", + _network_client_factory, + [ + (ExpressRouteCircuitPeeringsOperations.delete, None), + (ExpressRouteCircuitPeeringsOperations.get, 'ExpressRouteCircuitPeering'), + (ExpressRouteCircuitPeeringsOperations.list, '[ExpressRouteCircuitPeering]'), + ]) # ExpressRouteCircuitsOperations -_auto_command.operation_builder("network", - "expressroutecircuit", - "express_route_circuits", - _network_client_factory, - [ - (ExpressRouteCircuitsOperations.delete, None), - (ExpressRouteCircuitsOperations.get, 'ExpressRouteCircuit'), - (ExpressRouteCircuitsOperations.list_arp_table, '[ExpressRouteCircuitArpTable]'), - (ExpressRouteCircuitsOperations.list_routes_table, '[ExpressRouteCircuitRoutesTable]'), - (ExpressRouteCircuitsOperations.list_stats, '[ExpressRouteCircuitStats]'), - (ExpressRouteCircuitsOperations.list, '[ExpressRouteCircuit]'), - (ExpressRouteCircuitsOperations.list_all, '[ExpressRouteCircuit]'), - ]) +build_operation("network", + "expressroutecircuit", + "express_route_circuits", + _network_client_factory, + [ + (ExpressRouteCircuitsOperations.delete, None), + (ExpressRouteCircuitsOperations.get, 'ExpressRouteCircuit'), + (ExpressRouteCircuitsOperations.list_arp_table, '[ExpressRouteCircuitArpTable]'), + (ExpressRouteCircuitsOperations.list_routes_table, '[ExpressRouteCircuitRoutesTable]'), + (ExpressRouteCircuitsOperations.list_stats, '[ExpressRouteCircuitStats]'), + (ExpressRouteCircuitsOperations.list, '[ExpressRouteCircuit]'), + (ExpressRouteCircuitsOperations.list_all, '[ExpressRouteCircuit]'), + ]) # ExpressRouteServiceProvidersOperations -_auto_command.operation_builder("network", - "expressroutesp", - "express_route_service_providers", - _network_client_factory, - [ - (ExpressRouteServiceProvidersOperations.list, '[ExpressRouteServiceProvider]'), - ]) +build_operation("network", + "expressroutesp", + "express_route_service_providers", + _network_client_factory, + [ + (ExpressRouteServiceProvidersOperations.list, '[ExpressRouteServiceProvider]'), + ]) # LoadBalancersOperations -_auto_command.operation_builder("network", - "lb", - "load_balancers", - _network_client_factory, - [ - (LoadBalancersOperations.delete, None), - (LoadBalancersOperations.get, 'LoadBalancer'), - (LoadBalancersOperations.list_all, '[LoadBalancer]'), - (LoadBalancersOperations.list, '[LoadBalancer]'), - ]) +build_operation("network", + "lb", + "load_balancers", + _network_client_factory, + [ + (LoadBalancersOperations.delete, None), + (LoadBalancersOperations.get, 'LoadBalancer'), + (LoadBalancersOperations.list_all, '[LoadBalancer]'), + (LoadBalancersOperations.list, '[LoadBalancer]'), + ]) # LocalNetworkGatewaysOperations -_auto_command.operation_builder("network", - "localgateways", - "local_network_gateways", - _network_client_factory, - [ - (LocalNetworkGatewaysOperations.get, 'LocalNetworkGateway'), - (LocalNetworkGatewaysOperations.delete, None), - (LocalNetworkGatewaysOperations.list, '[LocalNetworkGateway]'), - ]) +build_operation("network", + "localgateways", + "local_network_gateways", + _network_client_factory, + [ + (LocalNetworkGatewaysOperations.get, 'LocalNetworkGateway'), + (LocalNetworkGatewaysOperations.delete, None), + (LocalNetworkGatewaysOperations.list, '[LocalNetworkGateway]'), + ]) # NetworkInterfacesOperations -_auto_command.operation_builder("network", - "nic", - "network_interfaces", - _network_client_factory, - [ - (NetworkInterfacesOperations.delete, None), - (NetworkInterfacesOperations.get, 'NetworkInterface'), - (NetworkInterfacesOperations.list_virtual_machine_scale_set_vm_network_interfaces, '[NetworkInterface]'), - (NetworkInterfacesOperations.list_virtual_machine_scale_set_network_interfaces, '[NetworkInterface]'), - (NetworkInterfacesOperations.get_virtual_machine_scale_set_network_interface, 'NetworkInterface'), - (NetworkInterfacesOperations.list_all, '[NetworkInterface]'), - (NetworkInterfacesOperations.list, '[NetworkInterface]'), - ]) +build_operation("network", + "nic", + "network_interfaces", + _network_client_factory, + [ + (NetworkInterfacesOperations.delete, None), + (NetworkInterfacesOperations.get, 'NetworkInterface'), + (NetworkInterfacesOperations.list_virtual_machine_scale_set_vm_network_interfaces, '[NetworkInterface]'), + (NetworkInterfacesOperations.list_virtual_machine_scale_set_network_interfaces, '[NetworkInterface]'), + (NetworkInterfacesOperations.get_virtual_machine_scale_set_network_interface, 'NetworkInterface'), + (NetworkInterfacesOperations.list_all, '[NetworkInterface]'), + (NetworkInterfacesOperations.list, '[NetworkInterface]'), + ]) # NetworkSecurityGroupsOperations -_auto_command.operation_builder("network", - "securitygroup", - "network_security_groups", - _network_client_factory, - [ - (NetworkSecurityGroupsOperations.delete, None), - (NetworkSecurityGroupsOperations.delete, 'NetworkSecurityGroup'), - (NetworkSecurityGroupsOperations.list_all, '[NetworkSecurityGroup]'), - (NetworkSecurityGroupsOperations.list, '[NetworkSecurityGroup]'), - ]) +build_operation("network", + "securitygroup", + "network_security_groups", + _network_client_factory, + [ + (NetworkSecurityGroupsOperations.delete, None), + (NetworkSecurityGroupsOperations.delete, 'NetworkSecurityGroup'), + (NetworkSecurityGroupsOperations.list_all, '[NetworkSecurityGroup]'), + (NetworkSecurityGroupsOperations.list, '[NetworkSecurityGroup]'), + ]) # PublicIPAddressesOperations -_auto_command.operation_builder("network", - "publicipaddress", - "public_ip_addresses", - _network_client_factory, - [ - (PublicIPAddressesOperations.delete, None), - (PublicIPAddressesOperations.get, 'PublicIPAddress'), - (PublicIPAddressesOperations.list_all, '[PublicIPAddress]'), - (PublicIPAddressesOperations.list, '[PublicIPAddress]'), - ]) +build_operation("network", + "publicipaddress", + "public_ip_addresses", + _network_client_factory, + [ + (PublicIPAddressesOperations.delete, None), + (PublicIPAddressesOperations.get, 'PublicIPAddress'), + (PublicIPAddressesOperations.list_all, '[PublicIPAddress]'), + (PublicIPAddressesOperations.list, '[PublicIPAddress]'), + ]) # RouteTablesOperations -_auto_command.operation_builder("network", - "routetable", - "route_tables", - _network_client_factory, - [ - (RouteTablesOperations.delete, None), - (RouteTablesOperations.get, 'RouteTable'), - (RouteTablesOperations.list, '[RouteTable]'), - (RouteTablesOperations.list_all, '[RouteTable]'), - ]) +build_operation("network", + "routetable", + "route_tables", + _network_client_factory, + [ + (RouteTablesOperations.delete, None), + (RouteTablesOperations.get, 'RouteTable'), + (RouteTablesOperations.list, '[RouteTable]'), + (RouteTablesOperations.list_all, '[RouteTable]'), + ]) # RoutesOperations -_auto_command.operation_builder("network", - "routeoperation", - "routes", - _network_client_factory, - [ - (RoutesOperations.delete, None), - (RoutesOperations.get, 'Route'), - (RoutesOperations.list, '[Route]'), - ]) +build_operation("network", + "routeoperation", + "routes", + _network_client_factory, + [ + (RoutesOperations.delete, None), + (RoutesOperations.get, 'Route'), + (RoutesOperations.list, '[Route]'), + ]) # SecurityRulesOperations -_auto_command.operation_builder("network", - "securityrules", - "security_rules", - _network_client_factory, - [ - (SecurityRulesOperations.delete, None), - (SecurityRulesOperations.get, 'SecurityRule'), - (SecurityRulesOperations.list, '[SecurityRule]'), - ]) +build_operation("network", + "securityrules", + "security_rules", + _network_client_factory, + [ + (SecurityRulesOperations.delete, None), + (SecurityRulesOperations.get, 'SecurityRule'), + (SecurityRulesOperations.list, '[SecurityRule]'), + ]) # SubnetsOperations -_auto_command.operation_builder("network", - "subnet", - "subnets", - _network_client_factory, - [ - (SubnetsOperations.delete, None), - (SubnetsOperations.get, 'Subnet'), - (SubnetsOperations.list, '[Subnet]'), - ]) +build_operation("network", + "subnet", + "subnets", + _network_client_factory, + [ + (SubnetsOperations.delete, None), + (SubnetsOperations.get, 'Subnet'), + (SubnetsOperations.list, '[Subnet]'), + ]) # UsagesOperations -_auto_command.operation_builder("network", - "usage", - "usages", - _network_client_factory, - [ - (UsagesOperations.list, '[Usage]'), - ]) +build_operation("network", + "usage", + "usages", + _network_client_factory, + [ + (UsagesOperations.list, '[Usage]'), + ]) # VirtualNetworkGatewayConnectionsOperations -_auto_command.operation_builder("network", - "vnetgatewayconnection", - "virtual_network_gateway_connections", - _network_client_factory, - [ - (VirtualNetworkGatewayConnectionsOperations.delete, None), - (VirtualNetworkGatewayConnectionsOperations.get, 'VirtualNetworkGatewayConnection'), - (VirtualNetworkGatewayConnectionsOperations.get_shared_key, 'ConnectionSharedKeyResult'), - (VirtualNetworkGatewayConnectionsOperations.list, '[VirtualNetworkGatewayConnection]'), - (VirtualNetworkGatewayConnectionsOperations.reset_shared_key, 'ConnectionResetSharedKey'), - (VirtualNetworkGatewayConnectionsOperations.set_shared_key, 'ConnectionSharedKey'), - ]) +build_operation("network", + "vnetgatewayconnection", + "virtual_network_gateway_connections", + _network_client_factory, + [ + (VirtualNetworkGatewayConnectionsOperations.delete, None), + (VirtualNetworkGatewayConnectionsOperations.get, 'VirtualNetworkGatewayConnection'), + (VirtualNetworkGatewayConnectionsOperations.get_shared_key, 'ConnectionSharedKeyResult'), + (VirtualNetworkGatewayConnectionsOperations.list, '[VirtualNetworkGatewayConnection]'), + (VirtualNetworkGatewayConnectionsOperations.reset_shared_key, 'ConnectionResetSharedKey'), + (VirtualNetworkGatewayConnectionsOperations.set_shared_key, 'ConnectionSharedKey'), + ]) # VirtualNetworkGatewaysOperations -_auto_command.operation_builder("network", - "vnetgateway", - "virtual_network_gateways", - _network_client_factory, - [ - (VirtualNetworkGatewaysOperations.delete, None), - (VirtualNetworkGatewaysOperations.get, 'VirtualNetworkGateway'), - (VirtualNetworkGatewaysOperations.list, '[VirtualNetworkGateway]'), - (VirtualNetworkGatewaysOperations.reset, 'VirtualNetworkGateway'), - ]) +build_operation("network", + "vnetgateway", + "virtual_network_gateways", + _network_client_factory, + [ + (VirtualNetworkGatewaysOperations.delete, None), + (VirtualNetworkGatewaysOperations.get, 'VirtualNetworkGateway'), + (VirtualNetworkGatewaysOperations.list, '[VirtualNetworkGateway]'), + (VirtualNetworkGatewaysOperations.reset, 'VirtualNetworkGateway'), + ]) # VirtualNetworksOperations -_auto_command.operation_builder("network", - "vnet", - "virtual_networks", - _network_client_factory, - [ - (VirtualNetworksOperations.delete, None), - (VirtualNetworksOperations.get, 'VirtualNetwork'), - (VirtualNetworksOperations.list, '[VirtualNetwork]'), - (VirtualNetworksOperations.list_all, '[VirtualNetwork]'), - ]) +build_operation("network", + "vnet", + "virtual_networks", + _network_client_factory, + [ + (VirtualNetworksOperations.delete, None), + (VirtualNetworksOperations.get, 'VirtualNetwork'), + (VirtualNetworksOperations.list, '[VirtualNetwork]'), + (VirtualNetworksOperations.list_all, '[VirtualNetwork]'), + ]) diff --git a/src/azure/cli/commands/vm.py b/src/azure/cli/commands/vm.py index 3cd18407c5f..11d4bb37cc2 100644 --- a/src/azure/cli/commands/vm.py +++ b/src/azure/cli/commands/vm.py @@ -1,3 +1,4 @@ +from .._locale import L from azure.mgmt.compute import ComputeManagementClient, ComputeManagementClientConfiguration from azure.mgmt.compute.operations import (AvailabilitySetsOperations, VirtualMachineExtensionImagesOperations, @@ -10,118 +11,118 @@ VirtualMachineScaleSetVMsOperations) from ._command_creation import get_service_client -from ..commands import _auto_command +from ..commands._auto_command import build_operation, LongRunningOperation def _compute_client_factory(): return get_service_client(ComputeManagementClient, ComputeManagementClientConfiguration) # pylint: disable=line-too-long -_auto_command.operation_builder("vm", - "availabilityset", - "availability_sets", - _compute_client_factory, - [ - (AvailabilitySetsOperations.delete, None), - (AvailabilitySetsOperations.get, 'AvailabilitySet'), - (AvailabilitySetsOperations.list, '[AvailabilitySet]'), - (AvailabilitySetsOperations.list_available_sizes, '[VirtualMachineSize]') - ]) +build_operation("vm", + "availabilityset", + "availability_sets", + _compute_client_factory, + [ + (AvailabilitySetsOperations.delete, None), + (AvailabilitySetsOperations.get, 'AvailabilitySet'), + (AvailabilitySetsOperations.list, '[AvailabilitySet]'), + (AvailabilitySetsOperations.list_available_sizes, '[VirtualMachineSize]') + ]) -_auto_command.operation_builder("vm", - "machineextensionimages", - "virtual_machine_extension_images", - _compute_client_factory, - [ - (VirtualMachineExtensionImagesOperations.get, 'VirtualMachineExtensionImage'), - (VirtualMachineExtensionImagesOperations.list_types, '[VirtualMachineImageResource]'), - (VirtualMachineExtensionImagesOperations.list_versions, '[VirtualMachineImageResource]'), - ]) +build_operation("vm", + "machineextensionimages", + "virtual_machine_extension_images", + _compute_client_factory, + [ + (VirtualMachineExtensionImagesOperations.get, 'VirtualMachineExtensionImage'), + (VirtualMachineExtensionImagesOperations.list_types, '[VirtualMachineImageResource]'), + (VirtualMachineExtensionImagesOperations.list_versions, '[VirtualMachineImageResource]'), + ]) -_auto_command.operation_builder("vm", - "extensions", - "virtual_machine_extensions", - _compute_client_factory, - [ - (VirtualMachineExtensionsOperations.delete, None), - (VirtualMachineExtensionsOperations.get, 'VirtualMachineExtension'), - ]) +build_operation("vm", + "extensions", + "virtual_machine_extensions", + _compute_client_factory, + [ + (VirtualMachineExtensionsOperations.delete, None), + (VirtualMachineExtensionsOperations.get, 'VirtualMachineExtension'), + ]) -_auto_command.operation_builder("vm", - "image", - "virtual_machine_images", - _compute_client_factory, - [ - (VirtualMachineImagesOperations.get, 'VirtualMachineImage'), - (VirtualMachineImagesOperations.list, '[VirtualMachineImageResource]'), - (VirtualMachineImagesOperations.list_offers, '[VirtualMachineImageResource]'), - (VirtualMachineImagesOperations.list_publishers, '[VirtualMachineImageResource]'), - (VirtualMachineImagesOperations.list_skus, '[VirtualMachineImageResource]'), - ]) +build_operation("vm", + "image", + "virtual_machine_images", + _compute_client_factory, + [ + (VirtualMachineImagesOperations.get, 'VirtualMachineImage'), + (VirtualMachineImagesOperations.list, '[VirtualMachineImageResource]'), + (VirtualMachineImagesOperations.list_offers, '[VirtualMachineImageResource]'), + (VirtualMachineImagesOperations.list_publishers, '[VirtualMachineImageResource]'), + (VirtualMachineImagesOperations.list_skus, '[VirtualMachineImageResource]'), + ]) -_auto_command.operation_builder("vm", - "usage", - "usage", - _compute_client_factory, - [ - (UsageOperations.list, '[Usage]'), - ]) +build_operation("vm", + "usage", + "usage", + _compute_client_factory, + [ + (UsageOperations.list, '[Usage]'), + ]) -_auto_command.operation_builder("vm", - "size", - "virtual_machine_sizes", - _compute_client_factory, - [ - (VirtualMachineSizesOperations.list, '[VirtualMachineSize]'), - ]) +build_operation("vm", + "size", + "virtual_machine_sizes", + _compute_client_factory, + [ + (VirtualMachineSizesOperations.list, '[VirtualMachineSize]'), + ]) -_auto_command.operation_builder("vm", - "", - "virtual_machines", - _compute_client_factory, - [ - (VirtualMachinesOperations.delete, None), - (VirtualMachinesOperations.deallocate, None), - (VirtualMachinesOperations.generalize, None), - (VirtualMachinesOperations.get, 'VirtualMachine'), - (VirtualMachinesOperations.list, '[VirtualMachine]'), - (VirtualMachinesOperations.list_all, '[VirtualMachine]'), - (VirtualMachinesOperations.list_available_sizes, '[VirtualMachineSize]'), - (VirtualMachinesOperations.power_off, None), - (VirtualMachinesOperations.restart, None), - (VirtualMachinesOperations.start, None), - ]) +build_operation("vm", + "", + "virtual_machines", + _compute_client_factory, + [ + (VirtualMachinesOperations.delete, None), + (VirtualMachinesOperations.deallocate, None), + (VirtualMachinesOperations.generalize, None), + (VirtualMachinesOperations.get, 'VirtualMachine'), + (VirtualMachinesOperations.list, '[VirtualMachine]'), + (VirtualMachinesOperations.list_all, '[VirtualMachine]'), + (VirtualMachinesOperations.list_available_sizes, '[VirtualMachineSize]'), + (VirtualMachinesOperations.power_off, None), + (VirtualMachinesOperations.restart, None), + (VirtualMachinesOperations.start, LongRunningOperation(L('Starting VM'), L('VM Started'))), + ]) -_auto_command.operation_builder("vm", - "scaleset", - "virtual_machine_scale_sets", - _compute_client_factory, - [ - (VirtualMachineScaleSetsOperations.deallocate, None), - (VirtualMachineScaleSetsOperations.delete, None), - (VirtualMachineScaleSetsOperations.get, 'VirtualMachineScaleSet'), - (VirtualMachineScaleSetsOperations.delete_instances, None), - (VirtualMachineScaleSetsOperations.get_instance_view, 'VirtualMachineScaleSetInstanceView'), - (VirtualMachineScaleSetsOperations.list, '[VirtualMachineScaleSet]'), - (VirtualMachineScaleSetsOperations.list_all, '[VirtualMachineScaleSet]'), - (VirtualMachineScaleSetsOperations.list_skus, '[VirtualMachineScaleSet]'), - (VirtualMachineScaleSetsOperations.power_off, None), - (VirtualMachineScaleSetsOperations.restart, None), - (VirtualMachineScaleSetsOperations.start, None), - (VirtualMachineScaleSetsOperations.update_instances, None), - ]) +build_operation("vm", + "scaleset", + "virtual_machine_scale_sets", + _compute_client_factory, + [ + (VirtualMachineScaleSetsOperations.deallocate, None), + (VirtualMachineScaleSetsOperations.delete, None), + (VirtualMachineScaleSetsOperations.get, 'VirtualMachineScaleSet'), + (VirtualMachineScaleSetsOperations.delete_instances, None), + (VirtualMachineScaleSetsOperations.get_instance_view, 'VirtualMachineScaleSetInstanceView'), + (VirtualMachineScaleSetsOperations.list, '[VirtualMachineScaleSet]'), + (VirtualMachineScaleSetsOperations.list_all, '[VirtualMachineScaleSet]'), + (VirtualMachineScaleSetsOperations.list_skus, '[VirtualMachineScaleSet]'), + (VirtualMachineScaleSetsOperations.power_off, None), + (VirtualMachineScaleSetsOperations.restart, None), + (VirtualMachineScaleSetsOperations.start, None), + (VirtualMachineScaleSetsOperations.update_instances, None), + ]) -_auto_command.operation_builder("vm", - "vmscaleset", - "virtual_machine_scale_set_vms", - _compute_client_factory, - [ - (VirtualMachineScaleSetVMsOperations.deallocate, None), - (VirtualMachineScaleSetVMsOperations.delete, None), - (VirtualMachineScaleSetVMsOperations.get, None), - (VirtualMachineScaleSetVMsOperations.get_instance_view, 'VirtualMachineScaleSetVMInstanceView'), - (VirtualMachineScaleSetVMsOperations.list, '[VirtualMachineScaleSetVM]'), - (VirtualMachineScaleSetVMsOperations.power_off, None), - (VirtualMachineScaleSetVMsOperations.restart, None), - (VirtualMachineScaleSetVMsOperations.start, None), - ]) +build_operation("vm", + "vmscaleset", + "virtual_machine_scale_set_vms", + _compute_client_factory, + [ + (VirtualMachineScaleSetVMsOperations.deallocate, None), + (VirtualMachineScaleSetVMsOperations.delete, None), + (VirtualMachineScaleSetVMsOperations.get, None), + (VirtualMachineScaleSetVMsOperations.get_instance_view, 'VirtualMachineScaleSetVMInstanceView'), + (VirtualMachineScaleSetVMsOperations.list, '[VirtualMachineScaleSetVM]'), + (VirtualMachineScaleSetVMsOperations.power_off, None), + (VirtualMachineScaleSetVMsOperations.restart, None), + (VirtualMachineScaleSetVMsOperations.start, None), + ]) From 6f1a05aad41837f0ab6b045b9e090936a31d2a5d Mon Sep 17 00:00:00 2001 From: Johan Stenberg Date: Wed, 2 Mar 2016 10:03:51 -0800 Subject: [PATCH 2/4] Fix print issue for python2.7 --- src/azure/cli/commands/_auto_command.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/azure/cli/commands/_auto_command.py b/src/azure/cli/commands/_auto_command.py index 9f87b1b051e..9846cd907d4 100644 --- a/src/azure/cli/commands/_auto_command.py +++ b/src/azure/cli/commands/_auto_command.py @@ -1,3 +1,4 @@ +from __future__ import print_function import inspect import sys import time From 80a15021bcf60450ebd35bae643b28a510483fe4 Mon Sep 17 00:00:00 2001 From: Johan Stenberg Date: Wed, 2 Mar 2016 10:06:22 -0800 Subject: [PATCH 3/4] Make pylint happy --- src/azure/cli/commands/_auto_command.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure/cli/commands/_auto_command.py b/src/azure/cli/commands/_auto_command.py index 9846cd907d4..84bac05999f 100644 --- a/src/azure/cli/commands/_auto_command.py +++ b/src/azure/cli/commands/_auto_command.py @@ -7,7 +7,7 @@ from azure.cli._argparse import IncorrectUsageError from ..commands import command, description, option -class LongRunningOperation(object): +class LongRunningOperation(object): #pylint: disable=too-few-public-methods progress_file = sys.stderr From 5592dd1d3166d7afce6b906fe311ad3639b8c083 Mon Sep 17 00:00:00 2001 From: Johan Stenberg Date: Wed, 2 Mar 2016 10:10:08 -0800 Subject: [PATCH 4/4] Make pylint even happier --- src/azure/cli/commands/_auto_command.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure/cli/commands/_auto_command.py b/src/azure/cli/commands/_auto_command.py index 84bac05999f..02a2722b190 100644 --- a/src/azure/cli/commands/_auto_command.py +++ b/src/azure/cli/commands/_auto_command.py @@ -7,7 +7,7 @@ from azure.cli._argparse import IncorrectUsageError from ..commands import command, description, option -class LongRunningOperation(object): #pylint: disable=too-few-public-methods +class LongRunningOperation(object): #pylint: disable=too-few-public-methods progress_file = sys.stderr