Class: TaggingWorkflow
- Inherits:
-
SampleBase
- Object
- SampleBase
- TaggingWorkflow
- Defined in:
- /build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb
Overview
A tagging workflow sample that demonstrates the tagging CRUD operations.
Constant Summary
- TAGGING_MODULE =
poor man’s import facility (it provides a simple name)
Com::Vmware::Cis::Tagging
- CATEGORY_CLASS =
TAGGING_MODULE::Category
- CATEGORY_MODEL_CLASS =
TAGGING_MODULE::CategoryModel
- TAG_CLASS =
TAGGING_MODULE::Tag
- TAG_ASSOCIATION_CLASS =
TAGGING_MODULE::TagAssociation
- TITLE =
'vAPI Tagging Workflow'- DESCRIPTION =
<<EOL Demonstrates tagging CRUD operations. Step 1: Create a Tag category. Step 2: Create a Tag under the category. Optional steps to associate a tag with the entity: Step 3: Assign the tag to an entity. Additional steps when clearData flag is set: Step 4: Detach the tag from the entity. Step 5: Delete the tag. Step 6: Delete the tag category. Note: the sample needs an existing entity (supplied by the --entity_id and --entit-type options.) EOL
Constants inherited from SampleBase
Instance Attribute Summary (collapse)
-
- (Object) category_desc
readonly
sample attributes.
-
- (Object) category_id
readonly
sample attributes.
-
- (Object) category_name
readonly
sample attributes.
-
- (Object) category_svc
readonly
sample attributes.
-
- (Object) dynamic_id
readonly
sample attributes.
-
- (Object) entity_id
readonly
sample attributes.
-
- (Object) entity_type
readonly
sample attributes.
-
- (Object) service_manager
readonly
sample attributes.
-
- (Object) tag_association_svc
readonly
sample attributes.
-
- (Object) tag_attached
readonly
sample attributes.
-
- (Object) tag_desc
readonly
sample attributes.
-
- (Object) tag_id
readonly
sample attributes.
-
- (Object) tag_name
readonly
sample attributes.
-
- (Object) tag_svc
readonly
sample attributes.
Attributes inherited from SampleBase
#description, #log, #ls_ip, #ls_url, #mgmt_node_id, #mgmt_node_index, #mgmt_node_name, #multiple_mgmt_node, #option_parser, #options, #sso_password, #sso_username, #title, #use_supporters
Instance Method Summary (collapse)
- - (Object) check_options
- - (Object) cleanup
-
- (Object) create_tag(name, description, category_id)
Creates a Tag.
-
- (Object) create_tag_category(name, description, cardinality)
create a category.
-
- (Object) delete_tag(tag_id)
Delete an existing tag.
-
- (Object) delete_tag_category(category_id)
Deletes an existing tag category.
- - (Object) execute
-
- (TaggingWorkflow) initialize
constructor
Constructs a new instance.
- - (Object) inject_options
- - (Object) setup
-
- (Object) update_tag(tag_id, description)
Update the description of an existing tag.
Methods inherited from SampleBase
Constructor Details
- (TaggingWorkflow) initialize
Constructs a new instance.
52 53 54 55 56 57 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 52 def initialize super(TITLE, DESCRIPTION, true) @tag_attached = false @foo_name = nil end |
Instance Attribute Details
- (Object) category_desc (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def category_desc @category_desc end |
- (Object) category_id (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def category_id @category_id end |
- (Object) category_name (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def category_name @category_name end |
- (Object) category_svc (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def category_svc @category_svc end |
- (Object) dynamic_id (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def dynamic_id @dynamic_id end |
- (Object) entity_id (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def entity_id @entity_id end |
- (Object) entity_type (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def entity_type @entity_type end |
- (Object) service_manager (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def service_manager @service_manager end |
- (Object) tag_association_svc (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_association_svc @tag_association_svc end |
- (Object) tag_attached (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_attached @tag_attached end |
- (Object) tag_desc (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_desc @tag_desc end |
- (Object) tag_id (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_id @tag_id end |
- (Object) tag_name (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_name @tag_name end |
- (Object) tag_svc (readonly)
sample attributes
45 46 47 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 45 def tag_svc @tag_svc end |
Instance Method Details
- (Object) check_options
85 86 87 88 89 90 91 92 93 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 85 def @category_name = check_required_opt(:category_name, '--category-name') @tag_name = check_required_opt(:tag_name, '--tag-name') @category_desc = [:category_desc] || category_name @tag_desc = [:tag_desc] || tag_name @entity_id = [:entity_id] @entity_type = [:entity_type] || 'Any' end |
- (Object) cleanup
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 158 def cleanup begin if tag_attached tag_association_svc.detach(tag_id, dynamic_id) log.info "Removed tag from entity: #{entity_id}" end unless tag_id.nil? delete_tag(tag_id) log.info "Tag deleted; Id: #{tag_id}" end unless category_id.nil? delete_tag_category(category_id) log.info "Tag category deleted; Id: #{category_id}" end rescue Exception => e report_error "cleanup failed" + e end end |
- (Object) create_tag(name, description, category_id)
Creates a Tag
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 205 def create_tag(name, description, category_id) if [:use_struct_setters] create_spec = TAG_CLASS::CreateSpec.new create_spec.name = name create_spec.description = description create_spec.category_id = category_id else # alternate usage: structure population via constructor hash create_spec = TAG_CLASS::CreateSpec.new( :name => name, :description => description, :category_id => category_id) end return tag_svc.create(create_spec) end |
- (Object) create_tag_category(name, description, cardinality)
create a category. User who invokes this needs create category privilege.
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 180 def create_tag_category(name, description, cardinality) if [:use_struct_setters] create_spec = CATEGORY_CLASS::CreateSpec.new create_spec.name = name create_spec.description = description create_spec.cardinality = cardinality create_spec. = Set.new else # alternate usage: structure population via constructor hash create_spec = CATEGORY_CLASS::CreateSpec.new( :name => name, :description => description, :cardinality => cardinality, :associable_types => Set.new) end return category_svc.create(create_spec) end |
- (Object) delete_tag(tag_id)
Delete an existing tag. User who invokes this API needs delete privilege on the tag.
236 237 238 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 236 def delete_tag(tag_id) tag_svc.delete(tag_id) end |
- (Object) delete_tag_category(category_id)
Deletes an existing tag category. User who invokes this API needs delete privilege on the tag category.
200 201 202 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 200 def delete_tag_category(category_id) category_svc.delete(category_id) end |
- (Object) execute
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 102 def execute log.info 'List all the existing categories...' categories = category_svc.list() if categories.size > 0 categories.each { |category| log.info "Found Category: #{category}" } else log.info 'No Tag Category Found...' end log.info 'List all the existing tags...' = tag_svc.list() if .size > 0 .each { |tag| log.info "Found Tag: #{tag}" } else log.info 'No Tag Found...' end log.info 'creating a new tag category...' @category_id = create_tag_category(category_name, category_desc, CATEGORY_MODEL_CLASS::Cardinality::MULTIPLE) assert(!category_id.nil?, 'create category failed') log.info "Tag category created; Id: #{category_id}" log.info 'creating a new tag...' @tag_id = create_tag(tag_name, tag_desc, category_id) assert(!tag_id.nil?, 'create tag failed') log.info "Tag created; Id: #{tag_id}" log.info 'updating the tag...' update_tag(tag_id, 'Server Tag updated at ' + Time.now.utc.to_s) log.info "Tag updated; Id: #{tag_id}" if entity_id # wired conversion to DynamicID @dynamic_id = Com::Vmware::Vapi::Std::DynamicID.new dynamic_id.type = entity_type dynamic_id.id = entity_id log.info "Entity ID: #{entity_id}" log.info 'Tagging the entity...' tag_association_svc.attach(tag_id, dynamic_id) for id in tag_association_svc.(dynamic_id) if id == tag_id @tag_attached = true break end end assert(tag_attached, 'tag attach failed') log.info "Tagged entity: #{entity_id}" end end |
- (Object) inject_options
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 59 def option_parser.on("-c", "--category-name NAME", "Name of the Category to be created") do |value| [:category_name] = value end option_parser.on("-C", "--category-desc [TEXT]", "Description of the Category to be created") do |value| [:category_desc] = value end option_parser.on("-t", "--tag-name NAME", "Name of the tag to be created") do |value| [:tag_name] = value end option_parser.on("-T", "--tag-desc [TEXT]", "Description of the tag to be created") do |value| [:tag_desc] = value end option_parser.on("-e", "--entity-id [UUID]", "ID of the entity") do |value| [:entity_id] = value end option_parser.on("-f", "--entity-type [TYPE]", "Type of the entity") do |value| [:entity_type] = value end end |
- (Object) setup
95 96 97 98 99 100 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 95 def setup @service_manager = get_service_manager() @category_svc = CATEGORY_CLASS.new(service_manager.vapi_config) @tag_svc = TAG_CLASS.new(service_manager.vapi_config) @tag_association_svc = TAG_ASSOCIATION_CLASS.new(service_manager.vapi_config) end |
- (Object) update_tag(tag_id, description)
Update the description of an existing tag. User who invokes this API needs edit privilege on the tag.
223 224 225 226 227 228 229 230 231 232 |
# File '/build/mts/release/bora-4571906/vcsuite-sdks/ruby/samples/lib/sample/workflow/tagging_workflow.rb', line 223 def update_tag(tag_id, description) if [:use_struct_setters] update_spec = TAG_CLASS::UpdateSpec.new update_spec.description = description else update_spec = TAG_CLASS::UpdateSpec.new( :description => description) end tag_svc.update(tag_id, update_spec) end |