= 0.4.1 - 16-Dec-2016 * The Configuration#environment accessor was added. As of this release you can specify 'usgov' as an option to the constructor, and the appropriate resource and authority endpoints will be used instead of the public ones. * Added the #authority_url and #resource_url accessors to the Configuration class. Use wisely. * The Armrest::COMMON constant was removed because the resource isn't actually constant. Instead use the authority_url or resource_url methods. This was really only meant for internal use anyway. * Added the Armrest::USGOV_RESOURCE and Armrest::USGOV_AUTHORITY constants. * Fixed a bug in the VirtualMachineService#delete_associated_resources where the method would fail if you requested network security group deletion but there was no associated network security group. * Fixed an issue in the ArmrestService#poll method where a 202 response might not actually have a body. In that case, it is treated as success. * Fixed a logic bug in the ArmrestService#wait method, and added the option to specify 0 (infinity) for the wait time. * Added the ArmrestService#log method, and the Configuration.log= method now automatically converts the argument to a Logger instance if it's not already. * The ArmrestService#base_url method was altered to include subscription information. = 0.4.0 - 8-Dec-2016 * The Configuration constructor no longer requires a subscription ID. However, the presence of a subscription ID is still required for almost all Service classes. The verification now happens later, within the Service constructor. * Added the SubscriptionService class. This does not require a subscription ID in advance, so you can get a list of subscriptions for a tenant. * The Configuration#subscription_id= and Configuration#proxy= writer methods now have custom implementations. = 0.3.13 - 30-Nov-2016 * Fixed the Billing::Usage model class name. * Updated the Billing::Usage#list method so that it returns an ArmrestCollection instead of a plain array. In addition, it now supports an :all option so that you don't have to deal with continuation tokens. = 0.3.12 - 15-Nov-2016 * Added the Insights::DiagnosticService class. * Added the get_from_vm and get_os_disk methods to StorageAccountService. * Added the delete_associated_resources method to VirtualMachineService. * The output of StorageAccount#blob_properties method now includes the blob name and the container name. * Added a service_name accessor to the ArmrestService base class. * The list_all method in StorageAccountService now supports a filter. = 0.3.11 - 8-Nov-2016 * Fixed the regex for the internal method parse_id_string, making the get_associated_resource method more robust. * The get_associated_resource now supports VM extensions. * The list and list_all methods for the ResourceService class now optionally return all possible results instead of capping at 1000. * Some updates for codeclimate-test-reporter, simplecov. = 0.3.10 - 28-Oct-2016 * Added the ResourceGroupBasedService#get_associated_resource method. This method will retrieve a service or subservice resource based on an ID string. = 0.3.9 - 19-Oct-2016 * The StorageAccount#delete_blob method now returns a ResponseHeaders object instead of true. * The Configuration.clear_caches method now additionally clears the CacheMethod config store. = 0.3.8 - 7-Oct-2-16 * Added more robust exception wrapping, now mostly based on http error code. * Refactored the internal fetch_providers method so that it uses our own service class method call, which is cached. * Added the TemplateDeploymentService#get_template method. * The :list and :list_all methods in the ResourceGroupBasedService class now automatically perform pagination. * Replaced our custom inspect with the one provided by pretty_print. * Added the :response_code and :response_headers accessors to the BaseModel class. All individual objects and collections now set these. * Modified our :poll method to check the :response_code, and to try the :location attribute if :azure_asyncoperation isn't found. * Updated the :create documentation for the StorageAccountService class. = 0.3.7 - 15-Sep-2016 * Modified the private image listing code in the StorageAccountService class to skip over storage accounts when we cannot get a key. = 0.3.6 - 13-Sep-2016 * Added the poll and wait methods to the ArmrestService base class. These are meant for use with asynchronous operations, e.g. create and delete. * All methods that returned a plain array now return an ArmrestCollection object instead. This is a subclass of Array, but includes header and skip token information. * Added the ArmrestCollection.create_from_response method. This creates and returns a collection based on a JSON response and a model type. * Minor update to the ApiException#to_s method so that includes a bit more information. = 0.3.5 - 11-Aug-2016 * When we added subscription ID validation in 0.3.2 we forgot to set proxy information first. That has been fixed. = 0.3.4 - 9-Aug-2016 * Modified the StorageAccount#blobs and StorageAccount#containers method. Both now accept a hash of options that you can use to modify the results. Also, both now automatically handle continuation tokens to collect all results. * The ResourceGroupBasedService#delete method now returns a ResponseHeaders object instead of nil. Furthermore, it will raise an error on a 204 response which indicates that the resource wasn't actually found. * Added the Network::LoadBalancerService and Network::InboundNatService classes. * Added the Network::RouteService and Network::RouteTableService classes. = 0.3.3 - 1-Aug-2016 * Added the :max_threads configuration option. This is used internally wherever the Parallel gem is used. * The default number of threads when used with VCR is reduced to 1. = 0.3.2 - 21-Jul-2016 * The subscription ID is now automatically validated in the Azure::Armrest::Configuration constructor. * Added a Hakiri badge to the README. * There have been some minor updates to the dependencies to enforce more recent versions of external gems, as suggested by Hakiri, for security reasons. * The ResourceGroupBasedService#list_all method (and all subclasses) now supports an optional hash that can be used to automatically filter result sets. = 0.3.1 - 14-Jul-2016 * Now uses the parallel gem and thread pools for those few methods where we were using threaded methods internally in order to reduce errors caused by too many requests. * Updated the rest-client dependency to 2.0.0 now that it has been released. * Updated travis.yml to only test 2.2.5 and 2.3.1 for now. Partly due to a change in the activesupport gem. * One rspec fix for 2.3.x. = 0.3.0 - 28-Jun-2016 * The configuration handling has been moved into its own class called Azure::Armrest::Configuration. You can call this explicitly using :new, or you can still use ArmrestService.configure. * The :subscription_id option for configuration is no longer optional. The logic for automatically fetching the first active subscription ID that could be found has been dropped. * Added the Billing::UsageService class. * Added a TooManyRequests exception. * Added support for pretty_print. * Added the addressable gem as a dependency, as it internally replaces the uri standard library. Calls to rest-client are still encoded, but now using Addressable::URI. * StorageAccountService no longer does account type validation. * Added the StorageAccountService#list_all_private_images method. = 0.2.10 - 15-Sep-2016 * Backported PR #213 (skip over storage accounts that don't have keys). = 0.2.9 - 25-Aug-2016 * Backported PR #211 (exception class updates and specs). = 0.2.8 - 22-Jul-2016 * Backported PR #188 (add list_all_private_images method). * Backported PR #194 (updated .travis.yml). = 0.2.7 - 20-Jun-2016 * All internal calls to rest-client are now explicitly URI.encoded. = 0.2.6 - 9-May-2016 * If no subscription is provided, the internal method for fetching a default subscription ID will now skip over tenant/subscription mismatches. * Removed the hard-coded api-version string for both TemplateDeploymentService and StorageAccountService. * Because there was an underlying REST API change for storage account keys for api-version strings set at 2016-01-01 or later, the list_account_key_objects and regenerate_account_key_objects methods were added. These return model objects instead of plain hashes. The list_account_keys and regenerate_account_keys methods still behave as before. = 0.2.5 - 11-Apr-2016 * Fixed a bug in the custom exception handler where the error code and message were not set properly. = 0.2.4 - 4-Apr-2016 * The ArmrestCollection#skip_token method was renamed to "continuation_token". * Added the ArmrestService.log and ArmrestService.log= methods. These are just thin wrappers around RestClient.log and RestClient.log= methods. * Fixed the StorageAccount#table_data method, and added support for continuation tokens. * Fixed a bug in the BaseModel's method generation code where an all-caps key would create strange results. * Dealt with a bug in the StorageAccountService#create method caused by a potentially empty response. = 0.2.3 - 29-Mar-2016 * Fixed the VirtualMachineImageService class. * Added an Insights::MetricsService class and support models. * Added a singleton method to clear some internal class variable caches that we use. This is primarily meant for testing. * Added a customs collection class that will eventually be used for better handling of skip tokens (paging). * Updated the Insights::Event class, modifying the list method's prototype, and now it returns our custom collection class. = 0.2.2 - 16-Mar-2016 * Fixed a potential name collision issue for nested objects. = 0.2.1 - 15-Mar-2016 * The ssl_version and ssl_verify options are now supported by, and automatically passed on to, StorageAccount model objects. * Added the get_blob_raw method to get at raw blob data. Use wisely. * Nested model objects are now named based on the attribute name rather than anonymous. = 0.2.0 - 10-Mar-2016 * The Armrest.configure method now supports the :ssl_verify and :ssl_version options. By default, the ssl_version option is set to TLSv1 instead of using older defaults used by Ruby's net-http library. = 0.1.3 - 7-Mar-2016 * StorageAccount model objects now have their proxy value automatically set to whatever the proxy was set to in the configuration argument for StorageAccountService. = 0.1.2 - 2-Mar-2016 * When selecting the appropriate api version string, we now reject dates that are ahead of the current date. * Some minor rubocop cleanup. = 0.1.1 - 26-Feb-2016 * Added proxy support for both the storage model and main configure method. * Added the SqlDatabaseService and SqlServerService classes. * Added the ResourceGroupBaseedSubservice abstract base class. * When fetching a default subscription, enabled subscriptions are chosen before disabled subscriptions. If only a disabled subscription can be found then a warning is issued. * You can now create blobs and blob snapshots with the storage model. Thanks go to Alexandre Lamandé and Nguyễn Tấn Tài and for their patches. * Some internal refactoring to use our own helper methods for various RestClient methods, and other cleanup. = 0.1.0 - 26-Jan-2015 * Refactored the ArmrestService class api_version and provider handling. * The ArmrestService class no longer uses "preview" api versions by default. * Added RBAC service classes. = 0.0.9 - 17-Dec-2015 * Added AlertService and EventService classes. * Added tables, table_info and table_data methods to the StorageAccount model. * Updates to the README. = 0.0.8 - 10-Nov-2015 * Added the list_private_images method to the StorageAccountService class. * Added the list_all method to the ResourceGroupService class. * Removed the EventService class for now. It did not actually work, and will eventually be re-implemented as part of a group of Insights classes. * Added a .to_h and .to_hash method for the BaseModel class. = 0.0.7 - 5-Nov-2015 * Refactored our BaseModel class so that it no longer uses Delegate or OpenStruct. * Added more methods to the StorageAccount model, and modified methods so that any options are always the last argument. * Bug fix for the StorageAccount#all_blobs method. = 0.0.6 - 23-Oct-2015 * Defined a custom == method for the BaseModel class. * The TemplateDeployment#properties.outputs now returns a hash. * Temporarily use a BaseModel hash ref instead of a method name due to name collision with ManageIQ until a general solution is worked out. = 0.0.5 - 21-Oct-2015 * The VirtualMachineService#series method now returns VirtualMachineSize objects instead of a raw hash. * Fixed a bug in the Network::IpAddress::Service class. * Cleaned up some spec warnings. = 0.0.4 - 19-Oct-2015 * All get/list/list_all methods now return wrapper class instances, e.g. a call to VirtualMachineService#get will return a VirtualMachine instance. These provide a nice OpenStruct wrapper so you can use methods instead of hash references if desired. * A custom StorageAccount class was added that implements methods for gathering blob information. * Most service classes now inherit from ResourceGroupBasedService, which provides a common set of methods typically used for various services. * Now re-raises RestClient exceptions as exceptions that we have defined. * The VirtualMachineImage class was overhauled and is now working properly. * The azure-signature, nokogiri and activesupport dependencies were added. = 0.0.3 - 13-Oct-2015 * Bug fixes for VirtualMachineImageService class. * Reorganized and updated SubnetService class. * Some updates to the BaseModel in prep for JSON wrapper classes. * Added NetworkSecurityGroupService and IpAddressService classes. = 0.0.2 - 23-Sep-2015 * Revamped class names. Now use "Service" instead of "Manager". * Several new service classes added, updated, and refactored. * All service classes now take and store configuration information as the first argument to ensure distinct credentials. * Added Bill Wei as author. = 0.0.1 - 13-Aug-2015 * Initial release