foreman_azure_rm 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4ed4553178840cb2968e9e328413e529cbc198c
4
- data.tar.gz: ecd58fbfe5c23475b2aa81b9984ad8de5ba2cccc
3
+ metadata.gz: ead0b87ab5585d6ade5849a45df0b613e7edc967
4
+ data.tar.gz: 007eb0bd6ac272f7f6811107dbb3555241f1ea23
5
5
  SHA512:
6
- metadata.gz: cf9926c2925460409da62a313ab3a8f3e5c035d433dfa86ea72a865c6a6030eed025d1e77e34a82f9a442c32480b8ab8dc230ae2db9cf02c2cb399dce46d5de1
7
- data.tar.gz: 9a504b87b437b3b51e55e23667481251ac944e28665c54380e255183695d332a42e6af3deef1e7d74be90f6e661ec3fbe4268ee26e038e1f8c24f8d9559e1020
6
+ metadata.gz: f17f319bddd0a45e85f367d732f231b912e70d4032815f4eeece960996855e6b2f80c9e7b7b366787dbdbdb70f5a9a449e2bc9b10d76a876c1336f73df0cbe75
7
+ data.tar.gz: 4690f001b5e4f8efd443a1e531f0011be8a5b78f562f2fa2b909567a12701e76eba913fa08aaa4ba7d8d5854e82d4b1f7d4e1a9c1da20b099ad613e0a85e4143
@@ -0,0 +1,23 @@
1
+ module ForemanAzureRM
2
+ module Concerns
3
+ module ComputeResourcesControllerExtensions
4
+ include Api::Version2
5
+ include Foreman::Controller::Parameters::ComputeResource
6
+
7
+ def available_resource_groups
8
+ compute_resource = ComputeResource.find_by_id(params[:id])
9
+ @available_resource_groups = compute_resource.available_resource_groups
10
+ render :available_resource_groups, :layout => 'api/v2/layouts/index_layout'
11
+ end
12
+
13
+ def action_permission
14
+ case params[:action]
15
+ when 'available_resource_groups'
16
+ :view
17
+ else
18
+ super
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -140,9 +140,16 @@ module FogExtensions
140
140
  def create_vm_extension(vm)
141
141
  if vm[:script_command].present? && vm[:script_uris].present?
142
142
  extension = Azure::ARM::Compute::Models::VirtualMachineExtension.new
143
- extension.publisher = 'Microsoft.Azure.Extensions'
144
- extension.virtual_machine_extension_type = 'CustomScript'
145
- extension.type_handler_version = '2.0'
143
+ if vm[:platform] == 'Linux'
144
+ extension.publisher = 'Microsoft.Azure.Extensions'
145
+ extension.virtual_machine_extension_type = 'CustomScript'
146
+ extension.type_handler_version = '2.0'
147
+ elsif vm[:platform] == 'Windows'
148
+ extension.publisher = 'Microsoft.Compute'
149
+ extension.virtual_machine_extension_type = 'CustomScriptExtension'
150
+ extension.type_handler_version = '1.7'
151
+ end
152
+
146
153
  extension.auto_upgrade_minor_version = true
147
154
  extension.location = vm['location'].gsub(/\s+/, '').downcase
148
155
  extension.settings = {
@@ -57,6 +57,10 @@ module ForemanAzureRM
57
57
  rg_names
58
58
  end
59
59
 
60
+ def available_resource_groups
61
+ rg_client.list_resource_groups
62
+ end
63
+
60
64
  def storage_accts(location = nil)
61
65
  stripped_location = location.gsub(/\s+/, '').downcase
62
66
  acct_names = []
@@ -82,6 +86,14 @@ module ForemanAzureRM
82
86
  end
83
87
  end
84
88
 
89
+ def available_networks(attr = {})
90
+ networks
91
+ end
92
+
93
+ def networks
94
+ subnets
95
+ end
96
+
85
97
  def virtual_networks(location = nil)
86
98
  if location.nil?
87
99
  azure_network_service.virtual_networks
@@ -91,7 +103,7 @@ module ForemanAzureRM
91
103
  end
92
104
  end
93
105
 
94
- def subnets(location)
106
+ def subnets(location = nil)
95
107
  vnets = virtual_networks(location)
96
108
  subnets = []
97
109
  vnets.each do |vnet|
@@ -108,14 +120,6 @@ module ForemanAzureRM
108
120
  super(options)
109
121
  end
110
122
 
111
- def networks
112
- subnets = []
113
- virtual_networks.each do |vnet|
114
- subnets << subnets(vnet.id)
115
- end
116
- subnets
117
- end
118
-
119
123
  def new_interface(attr = {})
120
124
  azure_network_service.network_interfaces.new(attr)
121
125
  end
@@ -148,24 +152,24 @@ module ForemanAzureRM
148
152
  end
149
153
 
150
154
  def create_nics(args = {})
151
- nics = []
155
+ nics = []
152
156
  formatted_location = args[:location].gsub(/\s+/, '').downcase
153
157
  args[:interfaces_attributes].each do |nic, attrs|
154
- attrs[:pubip_alloc] = attrs[:bridge]
158
+ attrs[:pubip_alloc] = attrs[:bridge]
155
159
  attrs[:privip_alloc] = (attrs[:name] == 'false') ? false : true
156
- pip_alloc = case attrs[:pubip_alloc]
157
- when 'Static'
158
- Fog::ARM::Network::Models::IPAllocationMethod::Static
159
- when 'Dynamic'
160
- Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
161
- when 'None'
162
- nil
163
- end
164
- priv_ip_alloc = if attrs[:priv_ip_alloc]
165
- Fog::ARM::Network::Models::IPAllocationMethod::Static
166
- else
167
- Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
168
- end
160
+ pip_alloc = case attrs[:pubip_alloc]
161
+ when 'Static'
162
+ Fog::ARM::Network::Models::IPAllocationMethod::Static
163
+ when 'Dynamic'
164
+ Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
165
+ when 'None'
166
+ nil
167
+ end
168
+ priv_ip_alloc = if attrs[:priv_ip_alloc]
169
+ Fog::ARM::Network::Models::IPAllocationMethod::Static
170
+ else
171
+ Fog::ARM::Network::Models::IPAllocationMethod::Dynamic
172
+ end
169
173
  if pip_alloc.present?
170
174
  pip = azure_network_service.public_ips.create(
171
175
  name: "#{args[:vm_name]}-pip#{nic}",
@@ -192,7 +196,7 @@ module ForemanAzureRM
192
196
  # does not currently support creating managed VMs
193
197
  def create_vm(args = {})
194
198
  args[:vm_name] = args[:name].split('.')[0]
195
- nics = create_nics(args)
199
+ nics = create_nics(args)
196
200
  if args[:ssh_key_data].present?
197
201
  disable_password_auth = true
198
202
  ssh_key_path = "/home/#{args[:username]}/.ssh/authorized_keys"
@@ -200,7 +204,7 @@ module ForemanAzureRM
200
204
  disable_password_auth = false
201
205
  ssh_key_path = nil
202
206
  end
203
- vm = client.create_managed_virtual_machine(
207
+ vm = client.create_managed_virtual_machine(
204
208
  name: args[:vm_name],
205
209
  location: args[:location],
206
210
  resource_group: args[:resource_group],
@@ -218,15 +222,15 @@ module ForemanAzureRM
218
222
  os_disk_size: args[:os_disk_size],
219
223
  premium_os_disk: args[:premium_os_disk],
220
224
  )
221
- vm_hash = Fog::Compute::AzureRM::Server.parse(vm)
222
- vm_hash[:password] = args[:password]
223
- vm_hash[:platform] = args[:platform]
224
- vm_hash[:puppet_master] = args[:puppet_master]
225
- vm_hash[:script_command] = args[:script_command]
226
- vm_hash[:script_uris] = args[:script_uris]
225
+ vm_hash = Fog::Compute::AzureRM::Server.parse(vm)
226
+ vm_hash[:password] = args[:password]
227
+ vm_hash[:platform] = args[:platform]
228
+ vm_hash[:puppet_master] = args[:puppet_master]
229
+ vm_hash[:script_command] = args[:script_command]
230
+ vm_hash[:script_uris] = args[:script_uris]
227
231
  client.create_vm_extension(vm_hash)
228
232
  client.servers.new vm_hash
229
- # fog-azure-rm raises all ARM errors as RuntimeError
233
+ # fog-azure-rm raises all ARM errors as RuntimeError
230
234
  rescue Fog::Errors::Error, RuntimeError => e
231
235
  Foreman::Logging.exception('Unhandled Azure RM error', e)
232
236
  destroy_vm vm.id if vm
@@ -242,8 +246,8 @@ module ForemanAzureRM
242
246
  # In ARM things must be deleted in order
243
247
  vm.destroy
244
248
  nic_ids.each do |id|
245
- nic = azure_network_service.network_interfaces.get(id.split('/')[4],
246
- id.split('/')[-1])
249
+ nic = azure_network_service.network_interfaces.get(id.split('/')[4],
250
+ id.split('/')[-1])
247
251
  ip_id = nic.public_ip_address_id
248
252
  nic.destroy
249
253
  if ip_id.present?
@@ -0,0 +1 @@
1
+ attributes :user
@@ -0,0 +1,3 @@
1
+ collection @available_resource_groups
2
+
3
+ attribute :name, :id, :location
@@ -0,0 +1 @@
1
+ attributes :user, :uuid
@@ -1,8 +1,15 @@
1
1
  Rails.application.routes.draw do
2
2
  scope :azure_rm, :path => '/azure_rm' do
3
- get :sizes, :controller => :hosts
4
- get :subnets, :controller => :hosts
5
- get :storage_accts, :controller => :hosts
6
- get :vnets, :controller => :hosts
3
+ get :sizes, :controller => :hosts
4
+ get :subnets, :controller => :hosts
5
+ get :storage_accts, :controller => :hosts
6
+ get :vnets, :controller => :hosts
7
+ end
8
+ namespace :api, :defaults => { :format => 'json' } do
9
+ scope "(:apiv)", :module => :v2, :defaults => { :apiv => 'v2' }, :apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2, :default => true) do
10
+ resources :compute_resources, :except => [:new, :edit] do
11
+ get :available_resource_groups, :on => :member
12
+ end
13
+ end
7
14
  end
8
15
  end
@@ -60,6 +60,8 @@ module ForemanAzureRM
60
60
 
61
61
  ::HostsController.send(:include, ForemanAzureRM::Concerns::HostsControllerExtensions)
62
62
 
63
+ Api::V2::ComputeResourcesController.send(:include, ForemanAzureRM::Concerns::ComputeResourcesControllerExtensions)
64
+
63
65
  require 'fog/azurerm/models/network/network_interface'
64
66
  require File.expand_path(
65
67
  '../../../app/models/concerns/fog_extensions/azurerm/network_interface',
@@ -1,3 +1,3 @@
1
1
  module ForemanAzureRM
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_azure_rm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Gregory
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-11 00:00:00.000000000 Z
11
+ date: 2017-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-azure-rm-downgraded
@@ -52,6 +52,7 @@ files:
52
52
  - app/assets/javascripts/foreman_azure_rm/azure_rm_location_callbacks.js
53
53
  - app/assets/javascripts/foreman_azure_rm/azure_rm_size_from_location.js
54
54
  - app/assets/javascripts/foreman_azure_rm/azure_rm_subnet_from_vnet.js
55
+ - app/controllers/foreman_azure_rm/concerns/compute_resources_controller_extensions.rb
55
56
  - app/controllers/foreman_azure_rm/concerns/hosts_controller_extensions.rb
56
57
  - app/models/concerns/fog_extensions/azurerm/compute.rb
57
58
  - app/models/concerns/fog_extensions/azurerm/data_disk.rb
@@ -63,6 +64,9 @@ files:
63
64
  - app/models/concerns/fog_extensions/azurerm/servers.rb
64
65
  - app/models/foreman_azure_rm/azure_rm.rb
65
66
  - app/overrides/add_location_size_js.rb
67
+ - app/views/api/v1/compute_resources/azurerm.json.rabl
68
+ - app/views/api/v2/compute_resources/available_resource_groups.rabl
69
+ - app/views/api/v2/compute_resources/azurerm.json.rabl
66
70
  - app/views/compute_resources/form/_azurerm.html.erb
67
71
  - app/views/compute_resources/show/_azurerm.html.erb
68
72
  - app/views/compute_resources_vms/form/azurerm/_base.html.erb