@spinnaker/azure 0.0.0-main-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +873 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/azure.module.d.ts +3 -0
  4. package/dist/azure.settings.d.ts +8 -0
  5. package/dist/common/AzureModalFooter.d.ts +18 -0
  6. package/dist/help/azure.help.d.ts +1 -0
  7. package/dist/image/image.reader.d.ts +2 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +6778 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/instance/azureInstanceType.service.d.ts +2 -0
  12. package/dist/instance/details/instance.details.controller.d.ts +2 -0
  13. package/dist/loadBalancer/configure/AzureLoadBalancerChoiceModal.d.ts +16 -0
  14. package/dist/loadBalancer/configure/createLoadBalancer.controller.d.ts +2 -0
  15. package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +2 -0
  16. package/dist/loadBalancer/loadBalancer.transformer.d.ts +2 -0
  17. package/dist/pipeline/stages/bake/azureBakeStage.d.ts +2 -0
  18. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +2 -0
  19. package/dist/pipeline/stages/destroyAsg/azureDestroyAsgStage.d.ts +2 -0
  20. package/dist/pipeline/stages/disableAsg/azureDisableAsgStage.d.ts +2 -0
  21. package/dist/pipeline/stages/enableAsg/azureEnableAsgStage.d.ts +2 -0
  22. package/dist/securityGroup/clone/cloneSecurityGroup.controller.d.ts +2 -0
  23. package/dist/securityGroup/configure/CreateSecurityGroupCtrl.d.ts +2 -0
  24. package/dist/securityGroup/configure/EditSecurityGroupCtrl.d.ts +2 -0
  25. package/dist/securityGroup/details/securityGroupDetail.controller.d.ts +2 -0
  26. package/dist/securityGroup/securityGroup.reader.d.ts +2 -0
  27. package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
  28. package/dist/securityGroup/securityGroup.write.service.d.ts +2 -0
  29. package/dist/serverGroup/configure/serverGroup.configure.azure.module.d.ts +2 -0
  30. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
  31. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +2 -0
  32. package/dist/serverGroup/configure/wizard/CloneServerGroup.azure.controller.d.ts +2 -0
  33. package/dist/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.d.ts +2 -0
  34. package/dist/serverGroup/configure/wizard/ServerGroupInstanceType.controller.d.ts +2 -0
  35. package/dist/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.d.ts +2 -0
  36. package/dist/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.d.ts +2 -0
  37. package/dist/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.d.ts +2 -0
  38. package/dist/serverGroup/configure/wizard/basicSettings/image.regional.filter.d.ts +2 -0
  39. package/dist/serverGroup/configure/wizard/capacity/capacitySelector.directive.d.ts +2 -0
  40. package/dist/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.d.ts +2 -0
  41. package/dist/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.d.ts +2 -0
  42. package/dist/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.d.ts +2 -0
  43. package/dist/serverGroup/configure/wizard/image/imageSettingsSelector.directive.d.ts +2 -0
  44. package/dist/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.d.ts +2 -0
  45. package/dist/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.d.ts +2 -0
  46. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.d.ts +2 -0
  47. package/dist/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.d.ts +2 -0
  48. package/dist/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.d.ts +2 -0
  49. package/dist/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.d.ts +2 -0
  50. package/dist/serverGroup/configure/wizard/tags/tagsSelector.directive.d.ts +2 -0
  51. package/dist/serverGroup/configure/wizard/zones/zoneSelector.directive.d.ts +2 -0
  52. package/dist/serverGroup/details/rollback/RollbackServerGroupModal.d.ts +25 -0
  53. package/dist/serverGroup/details/serverGroup.details.module.d.ts +2 -0
  54. package/dist/serverGroup/details/serverGroupDetails.azure.controller.d.ts +2 -0
  55. package/dist/serverGroup/serverGroup.transformer.d.ts +2 -0
  56. package/dist/utility.d.ts +28 -0
  57. package/dist/validation/applicationName.validator.d.ts +2 -0
  58. package/package.json +43 -0
  59. package/src/azure.module.ts +95 -0
  60. package/src/azure.settings.ts +16 -0
  61. package/src/common/AzureModalFooter.tsx +43 -0
  62. package/src/help/azure.help.ts +60 -0
  63. package/src/image/image.reader.js +43 -0
  64. package/src/image/image.reader.spec.js +108 -0
  65. package/src/index.ts +1 -0
  66. package/src/instance/azureInstanceType.service.js +831 -0
  67. package/src/instance/azureInstanceType.service.spec.js +17 -0
  68. package/src/instance/details/instance.details.controller.js +371 -0
  69. package/src/instance/details/instance.details.controller.spec.js +129 -0
  70. package/src/instance/details/instanceDetails.html +43 -0
  71. package/src/loadBalancer/configure/AzureLoadBalancerChoiceModal.tsx +101 -0
  72. package/src/loadBalancer/configure/advancedSettings.html +95 -0
  73. package/src/loadBalancer/configure/createLoadBalancer.controller.js +275 -0
  74. package/src/loadBalancer/configure/createLoadBalancer.controller.spec.js +39 -0
  75. package/src/loadBalancer/configure/createLoadBalancer.html +25 -0
  76. package/src/loadBalancer/configure/createLoadBalancerProperties.html +128 -0
  77. package/src/loadBalancer/configure/editLoadBalancer.html +26 -0
  78. package/src/loadBalancer/configure/healthCheck.html +74 -0
  79. package/src/loadBalancer/configure/listeners.html +50 -0
  80. package/src/loadBalancer/details/loadBalancerDetail.controller.js +181 -0
  81. package/src/loadBalancer/details/loadBalancerDetail.controller.spec.js +39 -0
  82. package/src/loadBalancer/details/loadBalancerDetail.html +128 -0
  83. package/src/loadBalancer/loadBalancer.transformer.js +109 -0
  84. package/src/logo/azure.icon.svg +196 -0
  85. package/src/logo/azure.logo.less +6 -0
  86. package/src/logo/logo_azure.png +0 -0
  87. package/src/pipeline/stages/bake/azureBakeStage.js +276 -0
  88. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +40 -0
  89. package/src/pipeline/stages/bake/bakeExecutionDetails.html +50 -0
  90. package/src/pipeline/stages/bake/bakeStage.html +187 -0
  91. package/src/pipeline/stages/destroyAsg/azureDestroyAsgStage.js +73 -0
  92. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
  93. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
  94. package/src/pipeline/stages/disableAsg/azureDisableAsgStage.js +65 -0
  95. package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
  96. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
  97. package/src/pipeline/stages/enableAsg/azureEnableAsgStage.js +70 -0
  98. package/src/pipeline/stages/enableAsg/enableAsgStage.html +11 -0
  99. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +1 -0
  100. package/src/securityGroup/clone/cloneSecurityGroup.controller.js +162 -0
  101. package/src/securityGroup/clone/cloneSecurityGroup.html +8 -0
  102. package/src/securityGroup/configure/CreateSecurityGroup.controller.spec.js +78 -0
  103. package/src/securityGroup/configure/CreateSecurityGroupCtrl.js +265 -0
  104. package/src/securityGroup/configure/EditSecurityGroupCtrl.js +222 -0
  105. package/src/securityGroup/configure/configSecurityGroup.mixin.controller.js +262 -0
  106. package/src/securityGroup/configure/createSecurityGroup.html +20 -0
  107. package/src/securityGroup/configure/createSecurityGroupIngress.html +75 -0
  108. package/src/securityGroup/configure/createSecurityGroupProperties.html +88 -0
  109. package/src/securityGroup/configure/editSecurityGroup.html +19 -0
  110. package/src/securityGroup/details/securityGroupDetail.controller.js +142 -0
  111. package/src/securityGroup/details/securityGroupDetail.html +78 -0
  112. package/src/securityGroup/securityGroup.reader.js +17 -0
  113. package/src/securityGroup/securityGroup.transformer.js +13 -0
  114. package/src/securityGroup/securityGroup.write.service.js +57 -0
  115. package/src/serverGroup/configure/serverGroup.configure.azure.module.js +47 -0
  116. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +175 -0
  117. package/src/serverGroup/configure/serverGroupConfiguration.service.js +357 -0
  118. package/src/serverGroup/configure/serverGroupConfiguration.service.spec.js +209 -0
  119. package/src/serverGroup/configure/wizard/CloneServerGroup.azure.controller.js +247 -0
  120. package/src/serverGroup/configure/wizard/ServerGroupInstanceArchetype.controller.js +35 -0
  121. package/src/serverGroup/configure/wizard/ServerGroupInstanceType.controller.js +15 -0
  122. package/src/serverGroup/configure/wizard/advancedSettings/ServerGroupAdvancedSettings.controller.js +25 -0
  123. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +5 -0
  124. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.html +138 -0
  125. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettingsSelector.directive.js +43 -0
  126. package/src/serverGroup/configure/wizard/basicSettings/ServerGroupBasicSettings.controller.js +71 -0
  127. package/src/serverGroup/configure/wizard/basicSettings/basicSettings.html +131 -0
  128. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.js +15 -0
  129. package/src/serverGroup/configure/wizard/basicSettings/image.regional.filter.spec.js +42 -0
  130. package/src/serverGroup/configure/wizard/capacity/capacity.html +5 -0
  131. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.html +20 -0
  132. package/src/serverGroup/configure/wizard/capacity/capacitySelector.directive.js +21 -0
  133. package/src/serverGroup/configure/wizard/capacity/zones.html +5 -0
  134. package/src/serverGroup/configure/wizard/healthSettings/ServerGroupHealthSettings.controller.js +38 -0
  135. package/src/serverGroup/configure/wizard/healthSettings/healthSettings.html +5 -0
  136. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.html +32 -0
  137. package/src/serverGroup/configure/wizard/healthSettings/healthSettingsSelector.directive.js +22 -0
  138. package/src/serverGroup/configure/wizard/image/ServerGroupImageSettings.controller.js +34 -0
  139. package/src/serverGroup/configure/wizard/image/imageSettings.html +5 -0
  140. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.html +33 -0
  141. package/src/serverGroup/configure/wizard/image/imageSettingsSelector.directive.js +22 -0
  142. package/src/serverGroup/configure/wizard/instanceArchetype.html +33 -0
  143. package/src/serverGroup/configure/wizard/instanceType/instanceType.html +10 -0
  144. package/src/serverGroup/configure/wizard/instanceType.html +33 -0
  145. package/src/serverGroup/configure/wizard/loadBalancers/ServerGroupLoadBalancers.controller.js +137 -0
  146. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +3 -0
  147. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.html +41 -0
  148. package/src/serverGroup/configure/wizard/loadBalancers/serverGroupLoadBalancersSelector.directive.js +22 -0
  149. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettings.controller.js +44 -0
  150. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.html +54 -0
  151. package/src/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.js +19 -0
  152. package/src/serverGroup/configure/wizard/networkSettings/networkSettings.html +3 -0
  153. package/src/serverGroup/configure/wizard/securityGroup/ServerGroupSecurityGroups.controller.js +28 -0
  154. package/src/serverGroup/configure/wizard/securityGroup/securityGroups.html +3 -0
  155. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.html +40 -0
  156. package/src/serverGroup/configure/wizard/securityGroup/serverGroupSecurityGroupsSelector.directive.js +38 -0
  157. package/src/serverGroup/configure/wizard/serverGroupWizard.html +61 -0
  158. package/src/serverGroup/configure/wizard/tags/tags.html +5 -0
  159. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.html +16 -0
  160. package/src/serverGroup/configure/wizard/tags/tagsSelector.directive.js +30 -0
  161. package/src/serverGroup/configure/wizard/templateSelection.html +9 -0
  162. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.html +21 -0
  163. package/src/serverGroup/configure/wizard/zones/zoneSelector.directive.js +28 -0
  164. package/src/serverGroup/details/rollback/RollbackServerGroupModal.tsx +158 -0
  165. package/src/serverGroup/details/serverGroup.details.module.js +11 -0
  166. package/src/serverGroup/details/serverGroupDetails.azure.controller.js +260 -0
  167. package/src/serverGroup/details/serverGroupDetails.html +98 -0
  168. package/src/serverGroup/serverGroup.transformer.js +150 -0
  169. package/src/serverGroup/serverGroup.transformer.spec.js +256 -0
  170. package/src/subnet/subnetSelectField.directive.html +28 -0
  171. package/src/subnet/subnetSelectField.directive.js +35 -0
  172. package/src/utility.spec.ts +61 -0
  173. package/src/utility.ts +95 -0
  174. package/src/validation/applicationName.validator.js +44 -0
@@ -0,0 +1,196 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#00A2D8;}
7
+ .st1{fill:#F79E1C;}
8
+ .st2{fill-rule:evenodd;clip-rule:evenodd;fill:#2ABAEC;}
9
+ .st3{fill:#F7B218;}
10
+ .st4{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
11
+ .st5{fill:#00A2D8;}
12
+ .st6{fill:#2ABAEC;}
13
+ .st7{fill:#323A45;}
14
+ .st8{fill:#88909B;}
15
+ .st9{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
16
+ .st10{fill:#A3BF3A;}
17
+ .st11{fill:#80A23E;}
18
+ .st12{fill:#7B4D87;}
19
+ .st13{fill:#2F75BB;}
20
+ .st14{fill-rule:evenodd;clip-rule:evenodd;fill:#85C9D5;}
21
+ .st15{opacity:0.15;fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
22
+ .st16{fill:#A5D9E2;}
23
+ .st17{fill:#85C9D5;}
24
+ .st18{fill-rule:evenodd;clip-rule:evenodd;fill:#323A45;}
25
+ .st19{fill:#FFFFFF;}
26
+ .st20{fill:#DAEFF3;}
27
+ .st21{fill:#2A65AF;}
28
+ .st22{fill:#F6ECF4;}
29
+ .st23{fill-rule:evenodd;clip-rule:evenodd;fill:#2F75BB;}
30
+ .st24{fill:none;}
31
+ .st25{fill-rule:evenodd;clip-rule:evenodd;fill:#F9BA19;}
32
+ .st26{fill-rule:evenodd;clip-rule:evenodd;fill:#A3BF3A;}
33
+ .st27{fill:#F6931D;}
34
+ .st28{fill:#5E6D80;}
35
+ .st29{fill-rule:evenodd;clip-rule:evenodd;}
36
+ .st30{fill:#00B8E2;}
37
+ .st31{fill-rule:evenodd;clip-rule:evenodd;fill:#5E6D80;}
38
+ .st32{fill:none;stroke:#85C9D5;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;}
39
+ .st33{fill:#2A89CA;}
40
+ .st34{fill-rule:evenodd;clip-rule:evenodd;fill:#7B4D87;}
41
+ .st35{opacity:0.3;fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
42
+ .st36{opacity:0.3;fill:#FFFFFF;}
43
+ .st37{fill-rule:evenodd;clip-rule:evenodd;fill:#78B843;}
44
+ .st38{fill:#78B843;}
45
+ .st39{fill-rule:evenodd;clip-rule:evenodd;fill:#EDF0F4;}
46
+ .st40{fill:#005BA3;}
47
+ .st41{fill:#0F80B0;}
48
+ .st42{fill:#005F87;}
49
+ .st43{fill:#B7D332;}
50
+ .st44{fill:#7FB900;}
51
+ .st45{opacity:0.6;fill:#FFFFFF;}
52
+ .st46{opacity:0.4;fill:#FFFFFF;}
53
+ .st47{opacity:0.1;clip-path:url(#XMLID_13_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
54
+ .st48{opacity:0.1;clip-path:url(#XMLID_64_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
55
+ .st49{opacity:0.1;clip-path:url(#XMLID_65_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
56
+ .st50{fill:#73BDCD;}
57
+ .st51{opacity:0.6;fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
58
+ .st52{fill-rule:evenodd;clip-rule:evenodd;fill:#80A23E;stroke:#FFFFFF;stroke-width:4;stroke-miterlimit:10;}
59
+ .st53{fill-rule:evenodd;clip-rule:evenodd;fill:#80A23E;}
60
+ .st54{clip-path:url(#XMLID_67_);fill:none;}
61
+ .st55{fill-rule:evenodd;clip-rule:evenodd;fill:#F7B218;}
62
+ .st56{opacity:0.35;clip-path:url(#XMLID_69_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
63
+ .st57{opacity:0.8;fill:#FFFFFF;}
64
+ .st58{opacity:0.35;clip-path:url(#XMLID_79_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
65
+ .st59{fill-rule:evenodd;clip-rule:evenodd;fill:#DB5B26;}
66
+ .st60{fill-rule:evenodd;clip-rule:evenodd;fill:#F58B1F;}
67
+ .st61{opacity:0.35;clip-path:url(#XMLID_84_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
68
+ .st62{fill-rule:evenodd;clip-rule:evenodd;fill:#404B59;}
69
+ .st63{opacity:0.1;clip-path:url(#XMLID_118_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
70
+ .st64{fill-rule:evenodd;clip-rule:evenodd;fill:#D1B0D3;}
71
+ .st65{opacity:0.15;clip-path:url(#XMLID_119_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
72
+ .st66{fill-rule:evenodd;clip-rule:evenodd;fill:#15B2E7;}
73
+ .st67{fill-rule:evenodd;clip-rule:evenodd;fill:#E1F3F8;}
74
+ .st68{opacity:0.15;clip-path:url(#XMLID_120_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
75
+ .st69{opacity:0.15;clip-path:url(#XMLID_124_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
76
+ .st70{opacity:0.3;clip-path:url(#XMLID_125_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
77
+ .st71{opacity:0.15;clip-path:url(#XMLID_126_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
78
+ .st72{fill-rule:evenodd;clip-rule:evenodd;fill:#7C8737;}
79
+ .st73{opacity:0.3;clip-path:url(#XMLID_127_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
80
+ .st74{opacity:0.15;clip-path:url(#XMLID_130_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
81
+ .st75{fill:#CCCBCB;}
82
+ .st76{fill-rule:evenodd;clip-rule:evenodd;fill:#88909B;}
83
+ .st77{opacity:0.1;fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
84
+ .st78{opacity:0.1;clip-path:url(#XMLID_131_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
85
+ .st79{opacity:0.1;clip-path:url(#XMLID_133_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
86
+ .st80{display:none;}
87
+ .st81{fill:#45B6F4;}
88
+ .st82{fill:#89919C;}
89
+ .st83{fill:#61ADD1;}
90
+ .st84{fill:#3899C6;}
91
+ .st85{fill:#F78F08;}
92
+ .st86{fill:#C1BFBC;}
93
+ .st87{fill:#7A7A7A;}
94
+ .st88{fill:#B3B4B5;}
95
+ .st89{opacity:0.48;}
96
+ .st90{fill:#A0A1A2;}
97
+ .st91{fill:#A1DEF0;}
98
+ .st92{fill:#804998;}
99
+ .st93{fill:#0072C6;}
100
+ .st94{fill:#59B4D9;}
101
+ .st95{fill:#3999C6;}
102
+ .st96{fill:#0078D7;}
103
+ .st97{fill:#D1B972;}
104
+ .st98{fill:#FEE087;}
105
+ .st99{fill:#B1CE2D;}
106
+ .st100{fill:#7FBA00;}
107
+ .st101{fill:#FCD116;}
108
+ .st102{fill:#719904;}
109
+ .st103{fill:#B8D432;}
110
+ .st104{fill-rule:evenodd;clip-rule:evenodd;fill:#804898;}
111
+ .st105{fill-rule:evenodd;clip-rule:evenodd;fill:#6B2980;}
112
+ .st106{fill:#6B2980;}
113
+ .st107{opacity:0.3;fill:#FFFFFF;enable-background:new ;}
114
+ .st108{opacity:0.2;fill:#1E1E1E;enable-background:new ;}
115
+ .st109{fill:#33BCF0;}
116
+ .st110{opacity:0.2;fill:#636363;}
117
+ .st111{opacity:0.1;clip-path:url(#XMLID_134_);fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
118
+ .st112{fill:#8B77B6;}
119
+ .st113{fill:#9B6CAC;}
120
+ .st114{fill:#874B94;}
121
+ .st115{opacity:0.4;fill:#7FBA00;enable-background:new ;}
122
+ .st116{opacity:0.8;fill:#7FBA00;enable-background:new ;}
123
+ .st117{opacity:0.6;fill:#7FBA00;enable-background:new ;}
124
+ .st118{opacity:0.25;fill:#7FBA00;enable-background:new ;}
125
+ .st119{fill:#DD5900;}
126
+ .st120{fill:#FF8C00;}
127
+ .st121{fill-rule:evenodd;clip-rule:evenodd;fill:#3E3E3E;}
128
+ .st122{fill:url(#path3060_1_);}
129
+ .st123{fill:#1870C5;}
130
+ .st124{fill:#72BFDF;}
131
+ .st125{fill:#3C3938;}
132
+ .st126{fill:#0072AC;}
133
+ .st127{fill:#0079B6;}
134
+ .st128{fill:#00A2D9;}
135
+ .st129{fill:#BFDC34;}
136
+ .st130{fill:#898989;}
137
+ .st131{fill:#EDF0F5;}
138
+ .st132{fill:#A3A4A7;}
139
+ .st133{fill:#353535;}
140
+ .st134{fill:#FF8C02;}
141
+ .st135{fill:#00AC8C;}
142
+ .st136{fill:#6EC2E9;}
143
+ .st137{fill:#442359;}
144
+ .st138{fill:#6DC0E6;}
145
+ .st139{fill:#432056;}
146
+ .st140{fill:#86CAD7;}
147
+ .st141{fill:#009E48;}
148
+ .st142{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
149
+ .st143{fill:#68217A;}
150
+ .st144{fill:#E5E5E5;}
151
+ .st145{opacity:0.15;fill:#FFFFFF;enable-background:new ;}
152
+ .st146{fill:#3898C6;}
153
+ .st147{fill:#80BA42;}
154
+ .st148{fill:#B3D234;}
155
+ .st149{fill-rule:evenodd;clip-rule:evenodd;fill:#F9F9F9;}
156
+ .st150{fill-rule:evenodd;clip-rule:evenodd;fill:#008EBE;}
157
+ .st151{opacity:0.1;fill-rule:evenodd;clip-rule:evenodd;fill:#F1F1F2;}
158
+ .st152{fill:#BAD80A;}
159
+ .st153{clip-path:url(#SVGID_2_);}
160
+ .st154{fill:#00BCF2;}
161
+ .st155{fill:#5AB4DA;}
162
+ .st156{fill:none;stroke:#5AB4DA;stroke-width:0.75;stroke-miterlimit:10;}
163
+ .st157{fill:#3898C5;}
164
+ .st158{fill:#7A7B7B;}
165
+ .st159{fill:#545555;}
166
+ .st160{fill:#D6EAF3;}
167
+ .st161{fill:#009580;}
168
+ .st162{fill:#BA141A;}
169
+ .st163{fill:#7AC3E1;}
170
+ .st164{fill:#E27226;}
171
+ .st165{fill:#FF9D26;}
172
+ .st166{opacity:0.12;fill:#BA141A;}
173
+ .st167{fill:#3C98C5;}
174
+ .st168{fill:#5AB3D8;}
175
+ .st169{fill:#AAD8EB;}
176
+ .st170{fill:#797979;}
177
+ .st171{fill:#959595;}
178
+ .st172{fill:#D1D1D1;}
179
+ .st173{clip-path:url(#SVGID_4_);}
180
+ .st174{fill:#33A2E5;}
181
+ .st175{fill:#71C2EA;}
182
+ .st176{fill:#005091;}
183
+ .st177{clip-path:url(#SVGID_6_);}
184
+ .st178{fill:#ACD64D;}
185
+ </style>
186
+ <g>
187
+ <g>
188
+ <g>
189
+ <g>
190
+ <polygon class="st93" points="26.5,4.5 12.5,15.5 1.5,35.5 11.5,35.5 "/>
191
+ <polygon class="st93" points="27.5,7.5 21.5,22.5 32.5,35.5 11.5,40.5 46.5,40.5 "/>
192
+ </g>
193
+ </g>
194
+ </g>
195
+ </g>
196
+ </svg>
@@ -0,0 +1,6 @@
1
+ .cloud-provider-logo {
2
+ .icon-azure {
3
+ mask-image: url('azure.icon.svg');
4
+ background-color: #0078d4;
5
+ }
6
+ }
Binary file
@@ -0,0 +1,276 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+ import _ from 'lodash';
5
+
6
+ import {
7
+ AccountService,
8
+ AuthenticationService,
9
+ BakeExecutionLabel,
10
+ BakeryReader,
11
+ PipelineTemplates,
12
+ Registry,
13
+ SETTINGS,
14
+ } from '@spinnaker/core';
15
+
16
+ import { AZURE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER } from './bakeExecutionDetails.controller';
17
+ import { AZURE_IMAGE_IMAGE_READER } from '../../../image/image.reader';
18
+ import { AZURE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE } from './../../../serverGroup/configure/serverGroupCommandBuilder.service';
19
+
20
+ export const AZURE_PIPELINE_STAGES_BAKE_AZUREBAKESTAGE = 'spinnaker.azure.pipeline.stage.bakeStage';
21
+ export const name = AZURE_PIPELINE_STAGES_BAKE_AZUREBAKESTAGE; // for backwards compatibility
22
+ module(AZURE_PIPELINE_STAGES_BAKE_AZUREBAKESTAGE, [
23
+ AZURE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE,
24
+ AZURE_IMAGE_IMAGE_READER,
25
+ AZURE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER,
26
+ ])
27
+ .config(function () {
28
+ Registry.pipeline.registerStage({
29
+ provides: 'bake',
30
+ cloudProvider: 'azure',
31
+ label: 'Bake',
32
+ description: 'Bakes an image',
33
+ templateUrl: require('./bakeStage.html'),
34
+ executionDetailsUrl: require('./bakeExecutionDetails.html'),
35
+ executionLabelComponent: BakeExecutionLabel,
36
+ extraLabelLines: (stage) => {
37
+ return stage.masterStage.context.allPreviouslyBaked || stage.masterStage.context.somePreviouslyBaked ? 1 : 0;
38
+ },
39
+ supportsCustomTimeout: true,
40
+ validators: [
41
+ { type: 'requiredField', fieldName: 'package' },
42
+ { type: 'requiredField', fieldName: 'regions' },
43
+ {
44
+ type: 'upstreamVersionProvided',
45
+ checkParentTriggers: true,
46
+ getMessage: (labels) =>
47
+ 'Bake stages should always have a stage or trigger preceding them that provides version information: ' +
48
+ '<ul>' +
49
+ labels.map((label) => `<li>${label}</li>`).join('') +
50
+ '</ul>' +
51
+ 'Otherwise, Spinnaker will bake and deploy the most-recently built package.',
52
+ },
53
+ ],
54
+ restartable: true,
55
+ });
56
+ })
57
+ .controller('azureBakeStageCtrl', [
58
+ '$scope',
59
+ '$q',
60
+ 'azureImageReader',
61
+ '$uibModal',
62
+ function ($scope, $q, azureImageReader, $uibModal) {
63
+ $scope.stage.extendedAttributes = $scope.stage.extendedAttributes || {};
64
+ $scope.stage.regions = $scope.stage.regions || [];
65
+
66
+ if (!$scope.stage.user) {
67
+ $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;
68
+ }
69
+
70
+ $scope.viewState = {
71
+ loading: true,
72
+ };
73
+
74
+ function initialize() {
75
+ $q.all([
76
+ AccountService.getCredentialsKeyedByAccount('azure'),
77
+ BakeryReader.getRegions('azure'),
78
+ BakeryReader.getBaseOsOptions('azure'),
79
+ BakeryReader.getBaseLabelOptions(),
80
+ ]).then(function ([credentialsKeyedByAccount, regions, baseOsOptions, baseLabelOptions]) {
81
+ $scope.accounts = Object.keys(credentialsKeyedByAccount);
82
+ $scope.regions = regions;
83
+ if ($scope.regions.length === 1) {
84
+ $scope.stage.region = $scope.regions[0];
85
+ } else if (!$scope.regions.includes($scope.stage.region)) {
86
+ delete $scope.stage.region;
87
+ }
88
+ if (!$scope.stage.regions.length && $scope.application.defaultRegions.azure) {
89
+ $scope.stage.regions.push($scope.application.defaultRegions.azure);
90
+ }
91
+ if (!$scope.stage.regions.length && $scope.application.defaultRegions.azure) {
92
+ $scope.stage.regions.push($scope.application.defaultRegions.azure);
93
+ }
94
+ $scope.baseOsOptions = baseOsOptions.baseImages;
95
+
96
+ $scope.baseLabelOptions = baseLabelOptions;
97
+ $scope.osTypeOptions = ['linux', 'windows'];
98
+ $scope.packageTypeOptions = ['DEB', 'RPM'];
99
+
100
+ $scope.viewState.roscoMode =
101
+ SETTINGS.feature.roscoMode ||
102
+ (typeof SETTINGS.feature.roscoSelector === 'function' && SETTINGS.feature.roscoSelector($scope.stage));
103
+ $scope.showAdvancedOptions = showAdvanced();
104
+ $scope.viewState.loading = false;
105
+
106
+ if ($scope.stage.managedImage != null) {
107
+ $scope.managedImagesWasChosen = true;
108
+ setManagedImages();
109
+ }
110
+ $scope.defaultImagesWasChosen = $scope.stage.baseOs != null;
111
+ $scope.customImagesWasChosen = $scope.stage.publisher != null;
112
+ });
113
+ }
114
+
115
+ function stageUpdated() {
116
+ deleteEmptyProperties();
117
+ // Since the selector computes using stage as an input, it needs to be able to recompute roscoMode on updates
118
+ if (typeof SETTINGS.feature.roscoSelector === 'function') {
119
+ $scope.viewState.roscoMode = SETTINGS.feature.roscoSelector($scope.stage);
120
+ }
121
+ }
122
+
123
+ function showAdvanced() {
124
+ const stg = $scope.stage;
125
+ return !!(
126
+ stg.templateFileName ||
127
+ (stg.extendedAttributes && _.size(stg.extendedAttributes) > 0) ||
128
+ stg.varFileName
129
+ );
130
+ }
131
+
132
+ function deleteEmptyProperties() {
133
+ _.forOwn($scope.stage, function (val, key) {
134
+ if (val === '') {
135
+ delete $scope.stage[key];
136
+ }
137
+ });
138
+ }
139
+
140
+ function setManagedImages() {
141
+ azureImageReader
142
+ .findImages({ provider: 'azure', managedImages: true, account: $scope.stage.account })
143
+ .then(function (images) {
144
+ let managedImageOptions = [];
145
+ for (let i in images) {
146
+ let image = images[i];
147
+ let newImage = {
148
+ id: image.imageName,
149
+ osType: image.ostype,
150
+ name: image.imageName,
151
+ };
152
+ managedImageOptions.push(newImage);
153
+ }
154
+ $scope.managedImageOptions = managedImageOptions;
155
+ })
156
+ .catch(() => {});
157
+ }
158
+
159
+ function setRegions() {
160
+ AccountService.getRegionsForAccount($scope.stage.account)
161
+ .then(function (regions) {
162
+ $scope.regions = regions.map((r) => r.name);
163
+ })
164
+ .catch(() => {});
165
+ }
166
+
167
+ this.addExtendedAttribute = function () {
168
+ if (!$scope.stage.extendedAttributes) {
169
+ $scope.stage.extendedAttributes = {};
170
+ }
171
+ $uibModal
172
+ .open({
173
+ templateUrl: PipelineTemplates.addExtendedAttributes,
174
+ controller: 'bakeStageAddExtendedAttributeController',
175
+ controllerAs: 'addExtendedAttribute',
176
+ resolve: {
177
+ extendedAttribute: function () {
178
+ return {
179
+ key: '',
180
+ value: '',
181
+ };
182
+ },
183
+ },
184
+ })
185
+ .result.then(function (extendedAttribute) {
186
+ $scope.stage.extendedAttributes[extendedAttribute.key] = extendedAttribute.value;
187
+ })
188
+ .catch(() => {});
189
+ };
190
+
191
+ this.removeExtendedAttribute = function (key) {
192
+ delete $scope.stage.extendedAttributes[key];
193
+ };
194
+
195
+ this.showTemplateFileName = function () {
196
+ return $scope.viewState.roscoMode || $scope.stage.templateFileName;
197
+ };
198
+
199
+ this.showExtendedAttributes = function () {
200
+ return (
201
+ $scope.viewState.roscoMode || ($scope.stage.extendedAttributes && _.size($scope.stage.extendedAttributes) > 0)
202
+ );
203
+ };
204
+
205
+ this.showVarFileName = function () {
206
+ return $scope.viewState.roscoMode || $scope.stage.varFileName;
207
+ };
208
+
209
+ this.showDefaultImages = function () {
210
+ $scope.managedImagesWasChosen = false;
211
+ $scope.defaultImagesWasChosen = true;
212
+ $scope.customImagesWasChosen = false;
213
+
214
+ $scope.stage.managedImage = null;
215
+ $scope.stage.publisher = null;
216
+ $scope.stage.offer = null;
217
+ $scope.stage.sku = null;
218
+ $scope.stage.osType = null;
219
+ $scope.stage.packageType = null;
220
+ };
221
+
222
+ this.showManagedImages = function () {
223
+ setManagedImages();
224
+
225
+ $scope.managedImagesWasChosen = true;
226
+ $scope.defaultImagesWasChosen = false;
227
+ $scope.customImagesWasChosen = false;
228
+
229
+ $scope.stage.osType = null;
230
+ $scope.stage.baseOs = null;
231
+ $scope.stage.publisher = null;
232
+ $scope.stage.offer = null;
233
+ $scope.stage.sku = null;
234
+ $scope.stage.packageType = null;
235
+ };
236
+
237
+ this.showCustomImages = function () {
238
+ $scope.managedImagesWasChosen = false;
239
+ $scope.defaultImagesWasChosen = false;
240
+ $scope.customImagesWasChosen = true;
241
+
242
+ $scope.stage.baseOs = null;
243
+ $scope.stage.managedImage = null;
244
+ $scope.stage.osType = null;
245
+ $scope.stage.packageType = null;
246
+ };
247
+
248
+ this.onChangeAccount = () => {
249
+ $scope.stage.osType = null;
250
+ $scope.stage.packageType = null;
251
+ $scope.stage.managedImage = null;
252
+
253
+ if ($scope.stage.account) {
254
+ setRegions();
255
+ }
256
+
257
+ if ($scope.managedImagesWasChosen) {
258
+ setManagedImages();
259
+ }
260
+ };
261
+
262
+ $scope.onChangeManagedImage = () => {
263
+ $scope.stage.packageType = null;
264
+ const selectedManagedImage = _.find($scope.managedImageOptions, { id: $scope.stage.managedImage });
265
+ $scope.stage.osType = selectedManagedImage.osType.toLowerCase();
266
+ };
267
+
268
+ this.onChangeOsType = function (e) {
269
+ $scope.stage.packageType = null;
270
+ };
271
+
272
+ $scope.$watch('stage', stageUpdated, true);
273
+
274
+ initialize();
275
+ },
276
+ ]);
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ import UIROUTER_ANGULARJS from '@uirouter/angularjs';
4
+ import { module } from 'angular';
5
+
6
+ import { SETTINGS } from '@spinnaker/core';
7
+
8
+ export const AZURE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER =
9
+ 'spinnaker.azure.pipeline.stage.bake.executionDetails.controller';
10
+ export const name = AZURE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER; // for backwards compatibility
11
+ module(AZURE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER, [UIROUTER_ANGULARJS]).controller(
12
+ 'azureBakeExecutionDetailsCtrl',
13
+ [
14
+ '$scope',
15
+ '$stateParams',
16
+ 'executionDetailsSectionService',
17
+ '$interpolate',
18
+ function ($scope, $stateParams, executionDetailsSectionService, $interpolate) {
19
+ $scope.configSections = ['bakeConfig', 'taskStatus'];
20
+
21
+ const initialized = () => {
22
+ $scope.detailsSection = $stateParams.details;
23
+ $scope.provider = $scope.stage.context.cloudProviderType || 'azure';
24
+ $scope.roscoMode =
25
+ SETTINGS.feature.roscoMode ||
26
+ (typeof SETTINGS.feature.roscoSelector === 'function' &&
27
+ SETTINGS.feature.roscoSelector($scope.stage.context));
28
+ $scope.bakeryDetailUrl = $interpolate(
29
+ $scope.roscoMode && SETTINGS.roscoDetailUrl ? SETTINGS.roscoDetailUrl : SETTINGS.bakeryDetailUrl,
30
+ );
31
+ };
32
+
33
+ const initialize = () => executionDetailsSectionService.synchronizeSection($scope.configSections, initialized);
34
+
35
+ initialize();
36
+
37
+ $scope.$on('$stateChangeSuccess', initialize);
38
+ },
39
+ ],
40
+ );
@@ -0,0 +1,50 @@
1
+ <div ng-controller="azureBakeExecutionDetailsCtrl">
2
+ <execution-details-section-nav sections="configSections"></execution-details-section-nav>
3
+ <div class="step-section-details" ng-if="detailsSection === 'bakeConfig'">
4
+ <div class="row">
5
+ <div class="col-md-6">
6
+ <dl class="dl-narrow dl-horizontal">
7
+ <dt if-multiple-providers>Provider</dt>
8
+ <dd if-multiple-providers>Azure</dd>
9
+ <dt>Image</dt>
10
+ <dd>{{stage.context.ami}}</dd>
11
+ <dt>Region</dt>
12
+ <dd>{{stage.context.region}}</dd>
13
+ <dt>Package</dt>
14
+ <dd>{{stage.context.package}}</dd>
15
+ </dl>
16
+ </div>
17
+ <div class="col-md-6">
18
+ <dl class="dl-narrow dl-horizontal">
19
+ <dt>Base OS</dt>
20
+ <dd>{{stage.context.baseOs}}</dd>
21
+ <dt>Label</dt>
22
+ <dd>{{stage.context.baseLabel}}</dd>
23
+ <dt ng-if="roscoMode || execution.trigger.rebake || stage.context.rebake">Rebake</dt>
24
+ <dd ng-if="roscoMode || execution.trigger.rebake || stage.context.rebake">
25
+ {{execution.trigger.rebake || stage.context.rebake || false}}
26
+ </dd>
27
+ <dt ng-if="stage.context.templateFileName">Template</dt>
28
+ <dd ng-if="stage.context.templateFileName">{{stage.context.templateFileName}}</dd>
29
+ <dt ng-if="stage.context.varFileName">Var File</dt>
30
+ <dd ng-if="stage.context.varFileName">{{stage.context.varFileName}}</dd>
31
+ </dl>
32
+ </div>
33
+ </div>
34
+ <stage-failure-message stage="stage" message="stage.failureMessage"></stage-failure-message>
35
+
36
+ <div class="row" ng-if="stage.context.region && stage.context.status.resourceId">
37
+ <div class="col-md-12">
38
+ <div class="alert alert-{{stage.isFailed ? 'danger' : 'info'}}">
39
+ <div ng-if="stage.context.previouslyBaked">No changes detected; reused existing bake</div>
40
+ <a target="_blank" href="{{ bakeryDetailUrl(stage) }}"> View Bakery Details </a>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <div class="step-section-details" ng-if="detailsSection === 'taskStatus'">
46
+ <div class="row">
47
+ <execution-step-details item="stage"></execution-step-details>
48
+ </div>
49
+ </div>
50
+ </div>