class ForemanAzureRm::AzureSdkAdapter

Public Class Methods

new(tenant, app_ident, secret_key, sub_id, azure_environment) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 3
def initialize(tenant, app_ident, secret_key, sub_id, azure_environment)
  @tenant               = tenant
  @app_ident            = app_ident
  @secret_key           = secret_key
  @sub_id               = sub_id
  @azure_environment    = azure_environment
  @ad_settings          = ad_environment_settings(azure_environment)
  @environment_settings = environment_settings(azure_environment)
end

Public Instance Methods

ad_environment_settings(azure_environment) click to toggle source

github.com/Azure/azure-sdk-for-ruby/issues/850 Retrieves a [MsRestAzure::ActiveDirectoryServiceSettings] object representing the settings for the given cloud. @param azure_environment [String] The Azure environment to retrieve settings for.

@return [MsRestAzure::ActiveDirectoryServiceSettings] Settings to be used for subsequent requests

# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 59
def ad_environment_settings(azure_environment)
  case azure_environment.downcase
  when 'azureusgovernment'
    MsRestAzure::ActiveDirectoryServiceSettings.get_azure_us_government_settings
  when 'azurechina'
    MsRestAzure::ActiveDirectoryServiceSettings.get_azure_china_settings
  when 'azuregermancloud'
    MsRestAzure::ActiveDirectoryServiceSettings.get_azure_german_settings
  when 'azure'
    MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
  end
end
azure_credentials(base_url) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 34
def azure_credentials(base_url)
  provider = MsRestAzure::ApplicationTokenProvider.new(
  @tenant,
  @app_ident,
  @secret_key,
  @ad_settings)
  
  credentials = MsRest::TokenCredentials.new(provider)

  {
    credentials: credentials,
    tenant_id: @tenant,
    client_id: @app_ident,
    client_secret: @secret_key,
    subscription_id: @sub_id,
    base_url: base_url
  }
end
check_vm_status(rg_name, vm_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 209
def check_vm_status(rg_name, vm_name)
  virtual_machine = compute_client.virtual_machines.get(rg_name, vm_name, expand:'instanceView')
  get_status(virtual_machine)
end
compute_client() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 18
def compute_client
  @compute_client ||= Compute::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
end
create_or_update_nic(rg_name, nic_name, parameters) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 189
def create_or_update_nic(rg_name, nic_name, parameters)
  network_client.network_interfaces.create_or_update(rg_name, nic_name, parameters)
end
create_or_update_pip(rg_name, pip_name, parameters) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 185
def create_or_update_pip(rg_name, pip_name, parameters)
  network_client.public_ipaddresses.create_or_update(rg_name, pip_name, parameters)
end
create_or_update_vm(rg_name, vm_name, parameters) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 174
def create_or_update_vm(rg_name, vm_name, parameters)
  compute_client.virtual_machines.create_or_update(rg_name, vm_name, parameters)
end
create_or_update_vm_extensions(rg_name, vm_name, vm_extension_name, extension_params) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 178
def create_or_update_vm_extensions(rg_name, vm_name, vm_extension_name, extension_params)
  compute_client.virtual_machine_extensions.create_or_update(rg_name,
                                                      vm_name,
                                                      vm_extension_name,
                                                      extension_params) 
end
delete_disk(rg_name, disk_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 205
def delete_disk(rg_name, disk_name)
  compute_client.disks.delete(rg_name, disk_name)
end
delete_nic(rg_name, nic_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 197
def delete_nic(rg_name, nic_name)
  network_client.network_interfaces.delete(rg_name, nic_name)
end
delete_pip(rg_name, pip_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 193
def delete_pip(rg_name, pip_name)
  network_client.public_ipaddresses.delete(rg_name, pip_name)
end
delete_vm(rg_name, vm_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 201
def delete_vm(rg_name, vm_name)
  compute_client.virtual_machines.delete(rg_name, vm_name)
end
environment_settings(azure_environment) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 72
def environment_settings(azure_environment)
  case azure_environment.downcase
  when 'azureusgovernment'
    MsRestAzure::AzureEnvironments::AzureUSGovernment
  when 'azurechina'
    MsRestAzure::AzureEnvironments::AzureChinaCloud
  when 'azuregermancloud'
    MsRestAzure::AzureEnvironments::AzureGermanCloud
  when 'azure'
    MsRestAzure::AzureEnvironments::AzureCloud
  end
end
get_custom_image(rg_name, image_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 149
def get_custom_image(rg_name, image_name)
  compute_client.images.get(rg_name, image_name)
end
get_marketplace_image(location, publisher_name, offer, skus, version) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 137
def get_marketplace_image(location, publisher_name, offer, skus, version)
  compute_client.virtual_machine_images.get(location, publisher_name, offer, skus, version)
end
get_status(virtual_machine) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 214
def get_status(virtual_machine)
  vm_statuses = virtual_machine.instance_view.statuses
  vm_status = nil
  vm_statuses.each do |status|
    if status.code.include? 'PowerState'
      vm_status = status.code.split('/')[1]
    end
  end
  vm_status
end
get_storage_accts() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 169
def get_storage_accts
  result = storage_client.storage_accounts.list
  result.value
end
get_vm(rg_name, vm_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 133
def get_vm(rg_name, vm_name)
  compute_client.virtual_machines.get(rg_name, vm_name)
end
get_vm_extension(rg_name, vm_name, vm_extension_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 118
def get_vm_extension(rg_name, vm_name, vm_extension_name)
  compute_client.virtual_machine_extensions.get(rg_name, vm_name, vm_extension_name)
end
list_custom_images() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 145
def list_custom_images
  compute_client.images.list
end
list_galleries() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 153
def list_galleries
  compute_client.galleries.list
end
list_regions(subscription_id) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 85
def list_regions(subscription_id)
  subscription_client.subscriptions.list_locations(subscription_id)
end
list_resources(filter) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 89
def list_resources(filter)
  resource_client.resources.list(filter)
end
list_versions(location, publisher_name, offer, skus) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 141
def list_versions(location, publisher_name, offer, skus)
  compute_client.virtual_machine_images.list(location, publisher_name, offer, skus)
end
list_vm_sizes(region) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 122
def list_vm_sizes(region)
  return [] unless region.present?
  stripped_region = region.gsub(/\s+/, '').downcase
  compute_client.virtual_machine_sizes.list(stripped_region).value()
end
list_vms(region) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 128
def list_vms(region)
  # List all VMs in a resource group
  virtual_machines = compute_client.virtual_machines.list_by_location(region)
end
network_client() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 22
def network_client
  @network_client ||= Network::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
end
public_ip(rg_name, pip_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 106
def public_ip(rg_name, pip_name)
  network_client.public_ipaddresses.get(rg_name, pip_name)
end
resource_client() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 13
def resource_client
  #resource_manager_endpoint_url
  @resource_client ||= Resources::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
end
rgs() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 93
def rgs
  rgs      = resource_client.resource_groups.list
  rgs.map(&:name)
end
start_vm(rg_name, vm_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 225
def start_vm(rg_name, vm_name)
  compute_client.virtual_machines.start(rg_name, vm_name)
end
stop_vm(rg_name, vm_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 229
def stop_vm(rg_name, vm_name)
  compute_client.virtual_machines.power_off(rg_name, vm_name)
  compute_client.virtual_machines.deallocate(rg_name, vm_name)
end
storage_client() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 26
def storage_client
  @storage_client ||= Storage::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
end
subnets(rg_name, vnet_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 102
def subnets(rg_name, vnet_name)
  network_client.subnets.list(rg_name, vnet_name)
end
subscription_client() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 30
def subscription_client
  @subscription_client ||= Subscriptions::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
end
vm_disk(rg_name, disk_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 114
def vm_disk(rg_name, disk_name)
  compute_client.disks.get(rg_name, disk_name)
end
vm_nic(rg_name,nic_name) click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 110
def vm_nic(rg_name,nic_name)
  network_client.network_interfaces.get(rg_name, nic_name)
end
vnets() click to toggle source
# File lib/foreman_azure_rm/azure_sdk_adapter.rb, line 98
def vnets
  network_client.virtual_networks.list_all
end