Module: Origen::PDM
- Includes:
- Attributes
- Defined in:
- lib/origen/pdm.rb
Instance Attribute Summary collapse
-
#pdm_bom ⇒ Object
Set this attribute to include components in the BOM, it should be set to an array of objects, each of which must also include the Origen::PDM module and have the pdm_version_number attribute set.
-
#pdm_branch_version_number ⇒ Object
Set this attribute to create a branch point release from the given version.
-
#pdm_initial_version_number ⇒ Object
If you begin automating PDM releases on a component that already exists on PDM, then you must set this attribute to let Origen know what the latest part number is on PDM.
-
#pdm_meta_tags ⇒ Object
Returns the value of attribute pdm_meta_tags.
-
#pdm_supercedes_version_number ⇒ Object
Set this to specify which version the new release should supercede.
-
#pdm_use_test_system ⇒ Object
Set true to use the PDM test system rather than the live system.
-
#pdm_version_number ⇒ Object
This should be set to the PDM version number that the current object represents.
Class Method Summary collapse
Instance Method Summary collapse
- #_pdm_version_number ⇒ Object
-
#freeze ⇒ Object
This method is called before permanently saving a released component in the store, override it to set instance variables for anything you wish to save.
- #pdm_base_url ⇒ Object
- #pdm_branch_part_number ⇒ Object
- #pdm_component_binding ⇒ Object
-
#pdm_item_group_url ⇒ Object
Returns the url for component’s item group on PDM, i.e.
-
#pdm_latest_part_number ⇒ Object
Returns the latest part number regardless of whether it is on a branch or not.
-
#pdm_latest_trunk_part_number ⇒ Object
Returns the latest part number that is not on a branch.
- #pdm_latest_trunk_version_number ⇒ Object
- #pdm_latest_version_number ⇒ Object
-
#pdm_part_number ⇒ Object
When talking to PDM we need to use the ‘Part Number’ which is comprised of the part name plus a numeric revision.
-
#pdm_pi ⇒ Object
The PI API, returns an instance of Origen::PDM::PI.
- #pdm_prepare_for_store ⇒ Object
-
#pdm_release!(options = {}) ⇒ Object
Release a new component version to PDM.
-
#pdm_remote_bom ⇒ Object
Pulls the BOM from PDM into an array of hashes with the following keys:.
- #pdm_supercedes_part_number ⇒ Object
- #pdm_tracker ⇒ Object
-
#pdm_url ⇒ Object
Returns the url for specific component version on PDM, i.e.
-
#pdm_web_service ⇒ Object
The PDM Web Service API, returns an instance of Origen::PDM::WebService.
Instance Attribute Details
#pdm_bom ⇒ Object
Set this attribute to include components in the BOM, it should be set to an array of objects, each of which must also include the Origen::PDM module and have the pdm_version_number attribute set.
37 38 39 |
# File 'lib/origen/pdm.rb', line 37 def pdm_bom @pdm_bom end |
#pdm_branch_version_number ⇒ Object
Set this attribute to create a branch point release from the given version. If this attribute is not set then all releases will simply supercede the last release.
27 28 29 |
# File 'lib/origen/pdm.rb', line 27 def pdm_branch_version_number @pdm_branch_version_number end |
#pdm_initial_version_number ⇒ Object
If you begin automating PDM releases on a component that already exists on PDM, then you must set this attribute to let Origen know what the latest part number is on PDM.
For example if the latest component is called C90TFS_NVM_tester_010 at the time of setting up the component in Origen then set this attribute to 10.
If the object does not exist on PDM yet then you can leave this blank and Origen will create and begin tracking the component from the initial version.
47 48 49 |
# File 'lib/origen/pdm.rb', line 47 def pdm_initial_version_number @pdm_initial_version_number end |
#pdm_meta_tags ⇒ Object
Returns the value of attribute pdm_meta_tags.
49 50 51 |
# File 'lib/origen/pdm.rb', line 49 def @pdm_meta_tags end |
#pdm_supercedes_version_number ⇒ Object
Set this to specify which version the new release should supercede. If un-specified the new release will automatically supercede the last version on the trunk.
32 33 34 |
# File 'lib/origen/pdm.rb', line 32 def pdm_supercedes_version_number @pdm_supercedes_version_number end |
#pdm_use_test_system ⇒ Object
Set true to use the PDM test system rather than the live system. The test system can be found at: designpdmtest.freescale.net/Agile
13 14 15 |
# File 'lib/origen/pdm.rb', line 13 def pdm_use_test_system @pdm_use_test_system end |
#pdm_version_number ⇒ Object
This should be set to the PDM version number that the current object represents. For example if the object represents C90TFS_NVM_tester_010, then set this attribute to 10.
This attribute is required to be set when including a component in a BOM, otherwise it is not required to be set when releasing a new version.
It can also be set to :latest to pick up the latest version number for the component.
23 24 25 |
# File 'lib/origen/pdm.rb', line 23 def pdm_version_number @pdm_version_number end |
Class Method Details
.pdm_pi(_options = {}) ⇒ Object
55 56 57 |
# File 'lib/origen/pdm.rb', line 55 def self.pdm_pi( = {}) @pdm_pi ||= PI.new(use_test_system: true) end |
.update_ticket(tkt) ⇒ Object
51 52 53 |
# File 'lib/origen/pdm.rb', line 51 def self.update_ticket(tkt) pdm_pi.update_ticket(tkt) end |
Instance Method Details
#_pdm_version_number ⇒ Object
134 135 136 137 138 139 140 141 |
# File 'lib/origen/pdm.rb', line 134 def _pdm_version_number if pdm_version_number && pdm_version_number != :latest pdm_version_number else pdm_latest_version_number || fail("You must set the pdm_version_number attribute of #{self.class}") end end |
#freeze ⇒ Object
This method is called before permanently saving a released component in the store, override it to set instance variables for anything you wish to save.
Normally it is best to assign the result of any pdm attributes that come from methods as instance variables so that the current state of the component can be reconstructed later.
206 207 |
# File 'lib/origen/pdm.rb', line 206 def freeze end |
#pdm_base_url ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/origen/pdm.rb', line 59 def pdm_base_url if pdm_use_test_system host = 'http://designpdmtest.freescale.net' else host = 'http://designpdm.freescale.net' end end |
#pdm_branch_part_number ⇒ Object
100 101 102 103 104 |
# File 'lib/origen/pdm.rb', line 100 def pdm_branch_part_number if pdm_branch_version_number pdm_part_name + '_%03d' % pdm_branch_version_number end end |
#pdm_component_binding ⇒ Object
173 174 175 |
# File 'lib/origen/pdm.rb', line 173 def pdm_component_binding binding end |
#pdm_item_group_url ⇒ Object
Returns the url for component’s item group on PDM, i.e. if the model represents pdm component C90TFS_NVM_tester_010 then the link to C90TFS_NVM_tester will be returned
77 78 79 |
# File 'lib/origen/pdm.rb', line 77 def pdm_item_group_url "#{pdm_base_url}/Agile/object/Item Group/#{pdm_part_name}" end |
#pdm_latest_part_number ⇒ Object
Returns the latest part number regardless of whether it is on a branch or not
107 108 109 110 111 |
# File 'lib/origen/pdm.rb', line 107 def pdm_latest_part_number if pdm_latest_version_number pdm_part_name + '_%03d' % pdm_latest_version_number end end |
#pdm_latest_trunk_part_number ⇒ Object
Returns the latest part number that is not on a branch
114 115 116 117 118 |
# File 'lib/origen/pdm.rb', line 114 def pdm_latest_trunk_part_number if pdm_latest_trunk_version_number pdm_part_name + '_%03d' % pdm_latest_trunk_version_number end end |
#pdm_latest_trunk_version_number ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/origen/pdm.rb', line 156 def pdm_latest_trunk_version_number if pdm_tracker.latest_trunk_version_number if pdm_initial_version_number && pdm_initial_version_number > pdm_tracker.latest_trunk_version_number pdm_initial_version_number else pdm_tracker.latest_trunk_version_number end else pdm_initial_version_number end end |
#pdm_latest_version_number ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/origen/pdm.rb', line 143 def pdm_latest_version_number if pdm_tracker.latest_version_number if pdm_initial_version_number && pdm_initial_version_number > pdm_tracker.latest_version_number pdm_initial_version_number else pdm_tracker.latest_version_number end else pdm_initial_version_number end end |
#pdm_part_number ⇒ Object
When talking to PDM we need to use the ‘Part Number’ which is comprised of the part name plus a numeric revision.
For example ‘C90TFS_NVM_tester’ is the part name, ‘C90TFS_NVM_tester_058’ is a possible part number.
96 97 98 |
# File 'lib/origen/pdm.rb', line 96 def pdm_part_number pdm_part_name + '_%03d' % _pdm_version_number end |
#pdm_pi ⇒ Object
The PI API, returns an instance of Origen::PDM::PI
82 83 84 |
# File 'lib/origen/pdm.rb', line 82 def pdm_pi @pdm_pi ||= PI.new(use_test_system: pdm_use_test_system) end |
#pdm_prepare_for_store ⇒ Object
209 210 211 212 213 214 215 216 |
# File 'lib/origen/pdm.rb', line 209 def pdm_prepare_for_store freeze # Clear these so as not to waste effort Marshalling them @pdm_pi = nil @pdm_web_service = nil @pdm_tracker = nil @pi_attributes = nil end |
#pdm_release!(options = {}) ⇒ Object
Release a new component version to PDM
191 192 193 194 195 196 197 198 |
# File 'lib/origen/pdm.rb', line 191 def pdm_release!( = {}) = { release_bom: false }.merge() ret = pdm_pi.release!(self) pdm_tracker.release! ret end |
#pdm_remote_bom ⇒ Object
Pulls the BOM from PDM into an array of hashes with the following keys:
-
:pdm_part_name (e.g. C90TFS_NVM_tester)
-
:pdm_version_number (e.g. 058 (actually returned as 58))
-
:pdm_version (e.g. Rel20121002)
186 187 188 |
# File 'lib/origen/pdm.rb', line 186 def pdm_remote_bom pdm_pi.catbom(self) end |
#pdm_supercedes_part_number ⇒ Object
120 121 122 123 124 |
# File 'lib/origen/pdm.rb', line 120 def pdm_supercedes_part_number if pdm_supercedes_version_number pdm_part_name + '_%03d' % pdm_supercedes_version_number end end |
#pdm_tracker ⇒ Object
177 178 179 |
# File 'lib/origen/pdm.rb', line 177 def pdm_tracker @pdm_tracker ||= Tracker.new(component: self) end |
#pdm_url ⇒ Object
Returns the url for specific component version on PDM, i.e. if the model represents pdm component C90TFS_NVM_tester_010 then the link to that component version will be returned
70 71 72 |
# File 'lib/origen/pdm.rb', line 70 def pdm_url "#{pdm_base_url}/Agile/object/#{pdm_part_type}/#{pdm_part_number}" end |
#pdm_web_service ⇒ Object
The PDM Web Service API, returns an instance of Origen::PDM::WebService
87 88 89 |
# File 'lib/origen/pdm.rb', line 87 def pdm_web_service @pdm_web_service ||= WebService.new end |