Skip to content
This repository has been archived by the owner on Oct 6, 2020. It is now read-only.

Commit

Permalink
Metadata working
Browse files Browse the repository at this point in the history
  • Loading branch information
amoghv committed Dec 24, 2013
1 parent 08a3a3e commit fa3d981
Show file tree
Hide file tree
Showing 50 changed files with 562 additions and 423 deletions.
6 changes: 3 additions & 3 deletions bin/stackmate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
require 'optparse'
require 'stackmate'
require 'stackmate/classmap'
require 'stackmate/waitcondition_server'
require 'stackmate/stack_server'
require 'stackmate/logging'


Expand All @@ -21,7 +21,7 @@
puts p
end
options[:wait_conditions] = true
opts.on("-n", "--no-wait-conditions", "Do not create any wait conditions") do
opts.on("-n", "--no-wait-conditions", "Do not create any wait conditions or metadata") do
options[:wait_conditions] = false
end
options[:dry_run] = false
Expand Down Expand Up @@ -62,7 +62,7 @@
if options[:file] && stack_name != ''
if options[:wait_conditions]
Thread.new do
StackMate::WaitConditionServer.run!
StackMate::StackServer.run!
end
end
engine = Ruote::Dashboard.new(
Expand Down
10 changes: 8 additions & 2 deletions lib/stackmate/participants/cloudstack.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
require 'stackmate/logging'
require 'stackmate/intrinsic_functions'
require 'stackmate/resolver'

require 'stackmate/metadata'

module StackMate

Expand Down Expand Up @@ -35,6 +35,12 @@ def on_workitem
reply
end

def set_metadata
resolved_metadata = recursive_resolve(workitem['Resources'][@name]['Metadata'],workitem)
stack_id = @resolved_names["CloudStack::StackId"]
Metadata.add_metadata(stack_id,@name,resolved_metadata)
end

protected

def set_tags(tags,resourceId,resourceType)
Expand Down Expand Up @@ -80,7 +86,7 @@ def make_async_request(cmd, args)
#resp = @client.send(cmd, args)
resp = @client.api_call(cmd,args)
jobid = resp['jobid'] if resp
resp = api_poll(jobid, 60, 5) if jobid
resp = api_poll(jobid, 3, 3) if jobid
return resp
rescue => e
logger.error("Failed to make request #{cmd} to CloudStack server while creating resource #{@name}")
Expand Down
5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_affinitygroup.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def create
p args
result_obj = make_async_request('createAffinityGroup',args)
resource_obj = result_obj['AffinityGroup'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -31,6 +32,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"AffinityGroup") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -55,6 +57,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -119,4 +122,4 @@ def get_description
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_autoscalepolicy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ def create
p args
result_obj = make_async_request('createAutoScalePolicy',args)
resource_obj = result_obj['AutoScalePolicy'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -30,6 +31,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"AutoScalePolicy") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -54,6 +56,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -110,4 +113,4 @@ def get_quiettime
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_autoscalevmgroup.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def create
p args
result_obj = make_async_request('enableAutoScaleVmGroup',args)
resource_obj = result_obj['AutoScaleVmGroup'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -27,6 +28,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"AutoScaleVmGroup") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -51,6 +53,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -83,4 +86,4 @@ def get_id
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_autoscalevmprofile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def create
p args
result_obj = make_async_request('createAutoScaleVmProfile',args)
resource_obj = result_obj['AutoScaleVmProfile'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -33,6 +34,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"AutoScaleVmProfile") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -57,6 +59,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -137,4 +140,4 @@ def get_counterparam
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_condition.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ def create
p args
result_obj = make_async_request('createCondition',args)
resource_obj = result_obj['Condition'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -31,6 +32,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"Condition") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -55,6 +57,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -119,4 +122,4 @@ def get_domainid
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_egressfirewallrule.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ def create
p args
result_obj = make_async_request('createEgressFirewallRule',args)
resource_obj = result_obj['EgressFirewallRule'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -34,6 +35,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"EgressFirewallRule") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -58,6 +60,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -146,4 +149,4 @@ def get_startport
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_firewallrule.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ def create
p args
result_obj = make_async_request('createFirewallRule',args)
resource_obj = result_obj['FirewallRule'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -34,6 +35,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"FirewallRule") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -58,6 +60,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -146,4 +149,4 @@ def get_endport
end
end
end


Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def create
p args
result_obj = make_async_request('createGlobalLoadBalancerRule',args)
resource_obj = result_obj['GlobalLoadBalancerRule'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -35,6 +36,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"GlobalLoadBalancerRule") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -59,6 +61,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -155,4 +158,4 @@ def get_gslblbmethod
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_instancegroup.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ def create
p args
result_obj = make_sync_request('createInstanceGroup',args)
resource_obj = result_obj['InstanceGroup'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -30,6 +31,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"InstanceGroup") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -54,6 +56,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -110,4 +113,4 @@ def get_domainid
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_ipaddress.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ def create
p args
result_obj = make_async_request('associateIpAddress',args)
resource_obj = result_obj['IpAddress'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -34,6 +35,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"IpAddress") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -58,6 +60,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -146,4 +149,4 @@ def get_isportable
end
end
end


5 changes: 4 additions & 1 deletion lib/stackmate/participants/cloudstack_ipforwardingrule.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def create
p args
result_obj = make_async_request('createIpForwardingRule',args)
resource_obj = result_obj['IpForwardingRule'.downcase]

#doing it this way since it is easier to change later, rather than cloning whole object
resource_obj.each_key do |k|
val = resource_obj[k]
Expand All @@ -32,6 +33,7 @@ def create
workitem[@name][k] = val
end
set_tags(@props['tags'],workitem[@name]['physical_id'],"IpForwardingRule") if @props.has_key?('tags')
set_metadata if workitem['Resources'][@name].has_key?('Metadata')
workitem['ResolvedNames'][@name] = name_cs
workitem['IdMap'][workitem[@name]['physical_id']] = @name

Expand All @@ -56,6 +58,7 @@ def delete
if (!(result_obj['error'] == true))
logger.info("Successfully deleted resource #{@name}")
else
workitem[@name]['delete_error'] = true
logger.info("CloudStack error while deleting resource #{@name}")
end
else
Expand Down Expand Up @@ -128,4 +131,4 @@ def get_openfirewall
end
end
end


Loading

0 comments on commit fa3d981

Please sign in to comment.