Skip to content

Commit

Permalink
Ansible Credential to update/delete in Tower
Browse files Browse the repository at this point in the history
  • Loading branch information
jameswnl committed Mar 13, 2017
1 parent 99a81ef commit a9303cd
Showing 1 changed file with 43 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,65 @@ def create_in_provider(manager_id, params)
connection.api.credentials.create!(params)
end

refresh(manager)
find_by!(:resource_id => manager.id, :manager_ref => credential.id)
end

def create_in_provider_queue(manager_id, params)
manager = ExtManagementSystem.find(manager_id)
queue(manager.my_zone, nil, "create_in_provider", [manager_id, params], "Creating #{name}")
end

private

def refresh(manager)
# Get the record in our database
# TODO: This needs to be targeted refresh so it doesn't take too long
task_ids = EmsRefresh.queue_refresh_task(manager)
task_ids.each { |tid| MiqTask.wait_for_taskid(tid) }

find_by!(:resource_id => manager.id, :manager_ref => credential.id)
end

def create_in_provider_queue(manager_id, params)
def queue(zone, instance_id, method_name, args, action)
task_opts = {
:action => "Creating #{name}",
:action => action,
:userid => "system"
}

manager = ExtManagementSystem.find(manager_id)

queue_opts = {
:args => [manager_id, params],
:args => args,
:class_name => name,
:method_name => "create_in_provider",
:method_name => method_name,
:priority => MiqQueue::HIGH_PRIORITY,
:role => "ems_operations",
:zone => manager.my_zone
:zone => zone
}

queue_opts[:instance_id] = instance_id if instance_id
MiqTask.generic_action_with_callback(task_opts, queue_opts)
end
end

def update_in_provider(params)
params.delete(:task_id) # in case this is being called through update_in_provider_queue which will stick in a :task_id
resource.with_provider_connection do |connection|
connection.api.credentials.find(manager_ref).update_attributes!(params)
end
self.class.send('refresh', resource)
reload!
end

def update_in_provider_queue(params)
self.class.send('queue', resource.my_zone, id, "update_in_provider", [params], "Updating #{self.class.name}")
end

def delete_in_provider
params.delete(:task_id) # in case this is being called through update_in_provider_queue which will stick in a :task_id
resource.with_provider_connection do |connection|
connection.api.credentials.find(manager_ref).destroy!
end
self.class.send('refresh', resource)
end

def delete_in_provider_queue
self.class.send('queue', resource.my_zone, id, "delete_in_provider", [], "Deleting #{self.class.name}")
end
end

0 comments on commit a9303cd

Please sign in to comment.