Class: StackMate::CloudStackIso
- Inherits:
-
CloudStackResource
- Object
- Ruote::Participant
- CloudStackResource
- StackMate::CloudStackIso
- Defined in:
- lib/stackmate/participants/cloudstack_iso.rb
Constant Summary
Constants included from Resolver
Resolver::INTEXP, Resolver::STRINGEXP, Resolver::UUIDEXP
Instance Attribute Summary
Attributes inherited from CloudStackResource
Instance Method Summary collapse
- #create ⇒ Object
- #delete ⇒ Object
- #get_id ⇒ Object
- #get_virtualmachineid ⇒ Object
- #on_workitem ⇒ Object
Methods included from Resolver
#get_named_tag, #get_resolved, #recursive_resolve, #resolve_tags, #resolve_to_deviceid, #validate_param
Methods included from Intrinsic
#fn_base64, #fn_getatt, #fn_join, #fn_lookup, #fn_map, #fn_ref, #fn_select, #intrinsic
Methods included from Logging
configure_logger_for, #logger, logger_for
Methods inherited from CloudStackResource
Constructor Details
This class inherits a constructor from StackMate::CloudStackResource
Instance Method Details
#create ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/stackmate/participants/cloudstack_iso.rb', line 9 def create logger.debug("Creating resource #{@name}") workitem[@name] = {} name_cs = workitem['StackName'] + '-' + @name args={} begin args['id'] = get_id args['virtualmachineid'] = get_virtualmachineid logger.info("Creating resource #{@name} with following arguments") p args result_obj = make_async_request('attachIso',args) resource_obj = result_obj['Iso'.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] if('id'.eql?(k)) k = 'physical_id' end workitem[@name][k] = val end (@props['tags'],workitem[@name]['physical_id'],"Iso") if @props.has_key?('tags') if workitem['Resources'][@name].has_key?('Metadata') workitem['ResolvedNames'][@name] = name_cs workitem['IdMap'][workitem[@name]['physical_id']] = @name rescue NoMethodError => nme logger.error("Create request failed for resource . Cleaning up the stack") raise nme rescue Exception => e logger.error(e.) raise e end end |
#delete ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/stackmate/participants/cloudstack_iso.rb', line 46 def delete logger.debug("Deleting resource #{@name}") begin physical_id = workitem[@name]['physical_id'] if !workitem[@name].nil? if(!physical_id.nil?) args = {'virtualmachineid' => physical_id } result_obj = make_async_request('detachIso',args) 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 logger.info("Resource not created in CloudStack. Skipping delete...") end rescue Exception => e logger.error("Unable to delete resorce #{@name}") end end |
#get_id ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/stackmate/participants/cloudstack_iso.rb', line 81 def get_id resolved_id = get_resolved(@props["id"],workitem) if resolved_id.nil? || !validate_param(resolved_id,"uuid") raise "Missing mandatory parameter id for resource #{@name}" end resolved_id end |
#get_virtualmachineid ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/stackmate/participants/cloudstack_iso.rb', line 89 def get_virtualmachineid resolved_virtualmachineid = get_resolved(@props["virtualmachineid"],workitem) if resolved_virtualmachineid.nil? || !validate_param(resolved_virtualmachineid,"uuid") raise "Missing mandatory parameter virtualmachineid for resource #{@name}" end resolved_virtualmachineid end |
#on_workitem ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/stackmate/participants/cloudstack_iso.rb', line 68 def on_workitem @name = workitem.participant_name @props = workitem['Resources'][@name]['Properties'] @props.downcase_key @resolved_names = workitem['ResolvedNames'] if workitem['params']['operation'] == 'create' create else delete end reply end |