lib/fog/azurerm/models/resources/deployment.rb
module Fog
module Resources
class AzureRM
# This class is giving implementation of create/save and
# delete/destroy for Deployment model.
class Deployment < Fog::Model
identity :name
attribute :id
attribute :resource_group
attribute :correlation_id
attribute :timestamp
attribute :outputs
attribute :providers
attribute :dependencies
attribute :template_link
attribute :parameters_link
attribute :mode
attribute :debug_setting
attribute :content_version
attribute :provisioning_state
def self.parse(deployment)
hash = {}
hash['name'] = deployment.name
hash['id'] = deployment.id
hash['resource_group'] = get_resource_from_resource_id(deployment.id, RESOURCE_GROUP_NAME)
hash['correlation_id'] = deployment.properties.correlation_id
hash['timestamp'] = deployment.properties.timestamp
hash['outputs'] = deployment.properties.outputs
hash['providers'] = []
deployment.properties.providers.each do |provider|
provider_obj = Fog::Resources::AzureRM::Provider.new
hash['providers'] << provider_obj.merge_attributes(Fog::Resources::AzureRM::Provider.parse(provider))
end
hash['dependencies'] = []
deployment.properties.dependencies.each do |dependency|
dependency_obj = Fog::Resources::AzureRM::Dependency.new
hash['dependencies'] << dependency_obj.merge_attributes(Fog::Resources::AzureRM::Dependency.parse(dependency))
end
hash['template_link'] = deployment.properties.template_link.uri
hash['parameters_link'] = deployment.properties.parameters_link.uri
hash['content_version'] = deployment.properties.template_link.content_version
hash['mode'] = deployment.properties.mode
hash['debug_setting'] = deployment.properties.debug_setting.detail_level unless deployment.properties.debug_setting.nil?
hash['provisioning_state'] = deployment.properties.provisioning_state
hash
end
def save
requires :name, :resource_group, :template_link, :parameters_link
deployment = service.create_deployment(resource_group, name, template_link, parameters_link)
merge_attributes(Fog::Resources::AzureRM::Deployment.parse(deployment))
end
def destroy
service.delete_deployment(resource_group, name)
end
end
end
end
end