class Azure::Armrest::TemplateDeploymentService
Base class for managing templates and deployments
Public Class Methods
new(configuration, options = {})
click to toggle source
Calls superclass method
Azure::Armrest::ArmrestService::new
# File lib/azure/armrest/template_deployment_service.rb, line 6 def initialize(configuration, options = {}) super(configuration, 'deployments', 'Microsoft.Resources', options) end
Public Instance Methods
delete_associated_resources(deploy_name, resource_group = configuration.resource_group)
click to toggle source
Delete a deployment and all associated resources that were generated by the deployment.
This is a synchronous call. It waits until all deletions complete
# File lib/azure/armrest/template_deployment_service.rb, line 54 def delete_associated_resources(deploy_name, resource_group = configuration.resource_group) operations = list_deployment_operations(deploy_name, resource_group) resource_ids = operations.collect do |op| if op.properties.provisioning_operation =~ /^create$/i op.properties.target_resource.id end end.compact resource_ids << build_id_string(resource_group, deploy_name) delete_resources(resource_ids, resource_ids.size) end
exists?(deploy_name, resource_group = configuration.resource_group)
click to toggle source
Returns whether or not the given deployment exists.
# File lib/azure/armrest/template_deployment_service.rb, line 68 def exists?(deploy_name, resource_group = configuration.resource_group) url = build_url(resource_group, deploy_name) rest_head(url) and true rescue Azure::Armrest::NotFoundException false end
get_deployment_operation(op_id, deploy_name, resource_group = configuration.resource_group)
click to toggle source
Get the operation of a deployment in a resource group
# File lib/azure/armrest/template_deployment_service.rb, line 31 def get_deployment_operation(op_id, deploy_name, resource_group = configuration.resource_group) validate_resource_group(resource_group) validate_resource(deploy_name) raise ArgumentError, "must specify operation id" unless op_id url = build_url(resource_group, deploy_name, 'operations', op_id) response = rest_get(url) TemplateDeploymentOperation.new(response) end
get_template(deploy_name, resource_group = configuration.resource_group)
click to toggle source
Returns the raw json template for the given deployment as a string.
# File lib/azure/armrest/template_deployment_service.rb, line 43 def get_template(deploy_name, resource_group = configuration.resource_group) validate_resource_group(resource_group) validate_resource(deploy_name) url = build_url(resource_group, deploy_name, 'exportTemplate') JSON.parse(rest_post(url))['template'].to_json end
list_all(filter = {})
click to toggle source
Get all deployments for the current subscription
# File lib/azure/armrest/template_deployment_service.rb, line 16 def list_all(filter = {}) list_in_all_groups(filter) end
list_deployment_operations(deploy_name, resource_group = configuration.resource_group)
click to toggle source
Get all operations of a deployment in a resource group
# File lib/azure/armrest/template_deployment_service.rb, line 21 def list_deployment_operations(deploy_name, resource_group = configuration.resource_group) validate_resource_group(resource_group) validate_resource(deploy_name) url = build_url(resource_group, deploy_name, 'operations') response = rest_get(url) JSON.parse(response)['value'].map { |hash| TemplateDeploymentOperation.new(hash) } end
list_names(resource_group = configuration.resource_group)
click to toggle source
Get names of all deployments in a resource group
# File lib/azure/armrest/template_deployment_service.rb, line 11 def list_names(resource_group = configuration.resource_group) list(resource_group).map(&:name) end
Private Instance Methods
delete_resource(id_string)
click to toggle source
# File lib/azure/armrest/template_deployment_service.rb, line 100 def delete_resource(id_string) log("Deleting #{id_string}") wait(delete_by_id(id_string), 0) log("Deleted #{id_string}") nil rescue Azure::Armrest::BadRequestException => err log("debug", err.to_s) log("Resource #{id_string} cannot be deleted because of BadRequestException. Will try again.") id_string rescue Azure::Armrest::PreconditionFailedException, Azure::Armrest::ConflictException => err log("debug", err.to_s) log("Resource #{id_string} cannot be deleted because it is used by others. Will try again.") id_string rescue Azure::Armrest::ResourceNotFoundException => err log("debug", err.to_s) nil end
delete_resources(ids, retry_cnt)
click to toggle source
# File lib/azure/armrest/template_deployment_service.rb, line 90 def delete_resources(ids, retry_cnt) if retry_cnt == 0 ids.each { |id| log("error", "Failed to delete #{id}") } return end remaining_ids = ids.collect { |id| delete_resource(id) }.compact delete_resources(remaining_ids, retry_cnt - 1) unless remaining_ids.empty? end
transform_create_options(hash)
click to toggle source
Don’t transform templates or parameters for deployments.
Calls superclass method
Azure::Armrest::ResourceGroupBasedService#transform_create_options
# File lib/azure/armrest/template_deployment_service.rb, line 79 def transform_create_options(hash) properties = hash['properties'] || hash[:properties] return super(hash) unless properties ignored = properties.extract!(:template, 'template', :parameters, 'parameters') hash = super(hash) (hash['properties'] || hash[:properties]).merge!(ignored) hash end