-
Notifications
You must be signed in to change notification settings - Fork 808
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(entitytags): Include previous server group image details #1705
feat(entitytags): Include previous server group image details #1705
Conversation
@@ -159,38 +163,23 @@ class TargetServerGroupResolver { | |||
} | |||
|
|||
private <T> T fetchWithRetries(Class<T> responseType, int maxRetries, long retryBackoff, Closure<Response> fetchClosure) { | |||
def converter = new JacksonConverter(mapper) | |||
return retrySupport.retry({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Plugging in retrySupport.retry()
had the side effect of retrying on all exceptions, not just NETWORK and 429.
This change is not particularly necessary but figured it might be worth consolidating our retry behavior somewhat. I couldn't think of a reason why we needed to be selective on what to retry?
@cfieber Thoughts? I believe you originally authored this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems fine to me for something that is just doing read requests
location, | ||
"ANCESTOR", | ||
"image", | ||
"true" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know what crazy person made this a String
but I didn't take on changing it as part of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really hope it wasn't me!
String location) { | ||
return retrySupport.retry(() -> { | ||
try { | ||
Map<String, Object> targetServerGroup = oortService.getServerGroupSummary( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checked this against both AWS and Titus.
@@ -53,97 +55,6 @@ class AddServerGroupEntityTagsTaskSpec extends Specification { | |||
1 * katoService.requestOperations(_) >> { throw new RuntimeException("something went wrong") } | |||
} | |||
|
|||
void "sends tag with all relevant metadata for each server group"() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
coverage for these scenarios in SpinnakerMetadataServerGroupTagGeneratorSpec
|
||
import java.util.function.Supplier; | ||
|
||
public class RetrySupport { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A candidate for kork
? We have a similar Retry class in clouddriver
(original inspiration).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems reasonable to me
@@ -155,4 +156,9 @@ public StageDefinitionBuilderFactory stageDefinitionBuilderFactory(Collection<St | |||
return new DefaultStageDefinitionBuilderFactory(stageDefinitionBuilders); | |||
} | |||
|
|||
@Bean | |||
public RetrySupport retrySupport() { | |||
return new RetrySupport(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking that someday we might actually set some default retry/backoff values and avoid the need to choose randomly when being used?
Map<String, Object> previousServerGroup = new HashMap<>(); | ||
previousServerGroup.put("name", targetServerGroup.get("serverGroupName")); | ||
previousServerGroup.put("imageName", targetServerGroup.get("imageName")); | ||
previousServerGroup.put("imageId", targetServerGroup.get("imageId")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haven't actually implemented the alternative rollback strategy, so may need to revisit this if more than imageId
is needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
might as well include instance type, load balancers, security groups (not things that change much, but for the sake of completeness...)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 to that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I agree but could see how the naming of the key would make it seem more exhaustive than it is currently.
My inclination would be to leave as is (with only image details for now) rather than complicate the rollback process by possibly exposing load balancers, instance types, etc.
Going to let this chill for an hour or two and mull it over.
LGTM |
4d78865
to
e11ccaf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sort of wonder about what will happen if you do a clone and change account or region. I know the ancestor tag resolution attempts to be non-fatal, but would be worth a sanity check on that
@@ -159,38 +163,23 @@ class TargetServerGroupResolver { | |||
} | |||
|
|||
private <T> T fetchWithRetries(Class<T> responseType, int maxRetries, long retryBackoff, Closure<Response> fetchClosure) { | |||
def converter = new JacksonConverter(mapper) | |||
return retrySupport.retry({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems fine to me for something that is just doing read requests
location, | ||
"ANCESTOR", | ||
"image", | ||
"true" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really hope it wasn't me!
Map<String, Object> previousServerGroup = new HashMap<>(); | ||
previousServerGroup.put("name", targetServerGroup.get("serverGroupName")); | ||
previousServerGroup.put("imageName", targetServerGroup.get("imageName")); | ||
previousServerGroup.put("imageId", targetServerGroup.get("imageId")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 to that
|
||
import java.util.function.Supplier; | ||
|
||
public class RetrySupport { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems reasonable to me
8f0f660
to
cb3257e
Compare
This will ultimately facilitate an orchestrated rollback even if the previous server group no longer exists. It relies on the entity tags feature being enabled (dependency on elastic search and not enabled by default in `clouddriver` / `orca`). This PR also introduces some common retry handling (see `RetrySupport`).
cb3257e
to
84502a0
Compare
As of spinnaker/orca#1705, `orca` is now adding previous server group details to the `spinnaker:metadata` tag. These details include: - previous server group name - image name - image id
As of spinnaker/orca#1705, `orca` is now adding previous server group details to the `spinnaker:metadata` tag. These details include: - previous server group name - image name - image id
As of spinnaker/orca#1705, `orca` is now adding previous server group details to the `spinnaker:metadata` tag. These details include: - previous server group name - image name - image id
As of spinnaker/orca#1705, `orca` is now adding previous server group details to the `spinnaker:metadata` tag. These details include: - previous server group name - image name - image id
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI.
… exists This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI. The `spinnaker:metadata` tag will include `buildInfo` for the image if it is returned from `clouddriver`.
… exists (#1716) This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of #1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI. The `spinnaker:metadata` tag will include `buildInfo` for the image if it is returned from `clouddriver`.
* feat(pipeline_template): Re-save dependent pipelines on template save (spinnaker#1606) Allows updates to templates that define triggers, params, notifications or concurrency options to cascade changes to downstream pipelines. * chore(expressions): Allow to override global spel version at pipeline level (spinnaker#1607) - Refactored to allow version override at pipeline level * feat(fastproperties): allow individual stage overrides via trigger (spinnaker#1608) * fix(gradle): Pin jedis version (spinnaker#1609) * fix(fastproperty): do not override context on monitor stage (spinnaker#1610) * fix(events): start/end pipeline events broke because of missing toString (spinnaker#1611) * fix(timeout): stage timeout overrides cumulative task durations (spinnaker#1605) * chore(licenses): fix license config and add missing license headers * fix(pipeline_templates): load parent templates when inlining template for plan (spinnaker#1614) * fix(pipeline_template): Multiple fixes from integration suite (spinnaker#1616) * fix(pipeline_template): Correctly handle multiple stage injects * fix(pipeline_template): Fix module rendering in partials * chore(queue): removed envelope handling code we don't use * refactor(queue): queue now uses message hash as the message id This makes de-duping easier and means we can easily re-prioritize messages (PR to follow). * chore(queue): renamed things to make intent clearer * feat(pipeline_template): Convert to pipeline template endpoint (spinnaker#1615) * feat(pipeline_template): Jinja rendering in triggers, params and notifications (spinnaker#1619) * refactor(metrics): more configurable metrics wiring for thread pools * chore(core): simpler handling of parallel stages * fix(queue): re-prioritize message on queue if an identical one is pushed * fix(metrics): missed migrator in refactor of thread pool metrics (spinnaker#1625) * feat(cluster-match): implement general purpose cluster matching rule engine (spinnaker#1579) * fix(canary): target canary cleanup server groups by create date (spinnaker#1612) * fix(pipeline_template): config level stage replacement (spinnaker#1622) * feat(queue): Add queue shovel for migrating backends (spinnaker#1624) * feat(redis_migration): log if there are still pending orchestrations/pipelines (spinnaker#1626) * fix(pipeline_template): root-level configs mapped if undefined (spinnaker#1623) * fix(queue): Fix stupid spring wiring (spinnaker#1628) * feat(servergroup): allow ad-hoc entity tags on deployments (spinnaker#1627) * chore(oortService): expose /serverGroups endpoint (spinnaker#1630) * perf(rollingpush): Avoid unnecessarily searching for instance ids (spinnaker#1633) If a `serverGroupName` or `asgName` is available on the stage context, there is no need to lookup each instance id individually. Also, `getServerGroup()` is more efficient than `getServerGroupFromCluster()` when dealing with clusters containing multiple server groups. * refactor(tag-generator): include server group coordinates in generateTags signature (spinnaker#1634) * fix(pipeline_template): Allow conditional stages inside of partials (spinnaker#1631) * feat(pipeline_template): Allow granular inheritance control on params, triggers, notifications (spinnaker#1632) * fix(stages/bakery): Fix bake stage, ensure deploymentDetails is added to context - Refactor Check Preconditions stage type for parallel stages * feat(pipeline_template): Jinja rendering in partials (spinnaker#1637) Renders the partials' stage config before rendering partials, to allow for more advanced jinja expressions in the partials. * fix(managed_pipeline): validation of variable types, integration tests for invalid pipelines (spinnaker#1629) * refactor(pipeline_template): Support multiple MPT schema versions (spinnaker#1621) Adds the ability to parse different schema versions. This PR doesn't actually change any functionality, except for switching to the new handler API. All existing v1 schema code works the same way it did. Additionally introduced Kotlin to module as new default. * tests(pipeline_templates): integrations tests and removing unique ID (spinnaker#1638) * feat(pipeline_template): Support template-less configurations (spinnaker#1636) * fix(timeouts): some tasks inherit stage timeout override (spinnaker#1640) * fix(pipeline_template): Regression in deserializing tempalted pipeline requests (spinnaker#1644) * fix(pipeline_template): Check for correct paramConfig field during render (spinnaker#1642) * fix(web): Enforce limit of pipelines when using previous redis conn (spinnaker#1646) * fix(redis_migration): fix logging of pending work (spinnaker#1647) * feat(artifacts): Add receivedArtifacts to Pipeline model. (spinnaker#1648) * feat(job): decrease job timout and make overridable (spinnaker#1649) * fix(web): Enforce limit on previous redis for app pipelines endpoint (spinnaker#1650) * fix(pipeline_template): Do not store state in error handler lol (spinnaker#1651) * Revert "feat(artifacts): Add receivedArtifacts to Pipeline model. (spinnaker#1648)" (spinnaker#1653) This reverts commit 0d9a2f1. * fix(web): Revert take calls; unexpected upstream behaviors (spinnaker#1654) * fix(rollbacks): support for tolerating some instance failures (spinnaker#1643) * feat(stage context): Get all stage results in a list (spinnaker#1655) * refactor(clouddriver): monitor clouddriver tasks every 5 seconds (spinnaker#1639) * feat(context): Adds trigger contents to stage context (spinnaker#1659) * feat(clouddriver): Support sharding read-only requests by `user` (spinnaker#1641) This allows you to serve all pipelines/orchestrations generated by a particular user (or set of users) with a dedicated clouddriver read replica. * feat(moniker): Use a cluster's moniker if available. (spinnaker#1664) * Use cluster's moniker if available * Format tests for moniker vs frigga cluster names * chore(expressions): Cleanup some noisy logs (spinnaker#1666) - Include execution id in log message - Remove some noise with debug statements * fix(mine): Search stage definition builders directly instead of depending on stage navigator when trying to cancel canary. * fix(web): Return correct num executions with dual redis (spinnaker#1668) * perf(build): Removing orca-queue-sqs; unused, unsupported * feat(core): Deploy manifest stage & task (spinnaker#1674) * feat(pipeline): Resolve received and expected artifacts in trigger. (spinnaker#1667) * fix(expressions): Include evaluation summary in v2 (spinnaker#1673) - ensure evaluation errors are included in precondition * fix(execution windows): don't add duplicate execution windows to parallel stages * fix(queue): treat waiting pipelines queue as FIFO if keepWaitingPipelines (spinnaker#1677) * feat(pipeline_template): Add marker support to disable rendered value expansion (spinnaker#1665) * feat(get_commits): Display SCM changes in pipeline-triggered pipelines (spinnaker#1652) The changes tab that displays SCM diff between deploys was not showing if the pipeline was triggered by another pipeline. Now it does. * fix(pipeline_template): Propagate nested render errors (spinnaker#1679) * feat(moniker): Allow moniker field to pass through to StageData and TargetServerGroups (spinnaker#1678) * fix(queue): don't keep pushing dead messages indefinitely * feat(qa): dry run pipelines Allow pipelines to run in "dry-run" mode. Stages are proxied and simply test correct evaluation of expressions, optionality, ordering and consistent results. * add executionId to MDC (spinnaker#1682) * fix(rrb): RRB should determine resize percentages at runtime (spinnaker#1681) This PR introduces the ability to specify a `scalePct` when scaling based on the capacity of another server group (scale_to_server_group). Previously all RRB capacity adjustments on the target server group were determined at build time. * Oort get server groups (spinnaker#1680) * Add new clouddriver getServerGroup endpoint * Add new clouddriver getServerGroup endpoint * Removed frigga from oortHelper * Rename oortService method for clearity * Overload getServerGroups and deprecate old prototype * Update test * Also deprecate on the DelegatedOortService * fix(pipeline_template): Fixing regression in test harness (spinnaker#1686) * feat(pipeline_template): PipelineIdTag checks context for variables defining application and name (spinnaker#1688) * fix(log): ensure executionId is cleaned up from MDC (spinnaker#1685) * feat(stages): make FAILED_CONTINUE bubble up from synthetic stages * feat(moniker): Use moniker for instance check task (spinnaker#1689) * feat(moniker): Use monikers within server-group tasks (spinnaker#1693) * fix(log) ensure MDC cleanup occurs in correct thread (spinnaker#1698) * fix(pipeline_template): Do not treat markdown lists as YAML alias (spinnaker#1645) * feat(artifacts): simplify artifact matching (spinnaker#1696) * feat(core): Force cache refresh manifest task (spinnaker#1687) * feat(moniker): use moniker over frigga in ScaleToClusterResize * chore(imports): remove unused frigga import * core(manifest): Delete manifest op (spinnaker#1700) * feat(artifacts): Check if default artifact was intended (spinnaker#1701) * feat(rrb): Support for running a pipeline between scale up and disable (spinnaker#1694) Coordinates for both the new and old server groups are passed along as pipeline parameters. - `delayBeforeDisableSec` -> `getDelayBeforeCleanup()` - support for lookup by stage id in `#stage()` * fix(dryrun): need injected property class to support list of values * Use moniker in DetermineHealthProvidersTask (spinnaker#1702) * feat(moniker): Use moniker for Job stages. (spinnaker#1699) * chore(dependencies): updating spinnaker-depenencies (spinnaker#1707) * feat(queue): update delivery time on runtask (spinnaker#1676) Adds reschedule method to queue, which updated the delivery time of an existing message on the queue. * feat(logging): ops controller annotation + logstashEncoder dep (spinnaker#1692) * fix(dryrun): log dry run activity * Properly cast Moniker from context Properly cast Moniker from context Put the try catch in the MonikerHelper Only check for IllegalArgumentException check existence rather than exception * feat(polling): remove polling for wait, manual judgement, and execution window (spinnaker#1661) * feat(entitytags): Include previous server group image details (spinnaker#1705) This will ultimately facilitate an orchestrated rollback even if the previous server group no longer exists. It relies on the entity tags feature being enabled (dependency on elastic search and not enabled by default in `clouddriver` / `orca`). This PR also introduces some common retry handling (see `RetrySupport`). * fix(entitytags): Do not fetch previous server group for Titus (spinnaker#1712) Subsequent PR will make this work properly for Titus. * fix(gae): Support new ExpectedArtifact in GAE deploy. (spinnaker#1706) * fix(polling): update time left calculation (spinnaker#1713) * fix(dryrun): send dry run notification correctly * fix(propertyFiles): change wording of error message to indicate that there might be a syntax error in the file (spinnaker#1715) * fix(fastproperties): always clean up properties marked for rollback (spinnaker#1717) * feat(core): implement noop stage (spinnaker#1719) * fix(dryrun): remove pipeline config it for dry runs * feat(rollback): Support rolling back to a server group that no longer exists (spinnaker#1716) This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI. The `spinnaker:metadata` tag will include `buildInfo` for the image if it is returned from `clouddriver`. * fix(runJob): retry fetching property files if not found (spinnaker#1721) * fix(executionWindow): revert to polling (spinnaker#1722) * fix(canary): gentle canary cleanup (spinnaker#1711) * fix(rollback): Propagate `interestingHealthProviderNames` (spinnaker#1723) If `interestingHealthProviderNames` are specified on the parent stage context, propagate them to the clone stage. * fix(dryrun): let Echo remove the pipelineConfigId * fix(dryrun): ignore certain keys in context * fix(cancel): cancel during wait stage (spinnaker#1726) * fix(logging): updating timeout message w/ timeout value (spinnaker#1728) * fix(dryrun): strip nested nulls when comparing context * fix(rrb): Only inject pipeline stage if applicaton + pipelineId present (spinnaker#1729) * fix(tasks): stop using 'shared' task state (spinnaker#1731) * fix(dryrun): try to cope with values that are sometimes floats or ints * fix(manual judgment): switching back to polling to respect timeout overrides (spinnaker#1735) * fix(exec window): leave shared state alone (spinnaker#1737) * Attempt to use moniker before frigga (spinnaker#1697) * feat(moniker): Use moniker for Rollingpush tasks. (spinnaker#1703) * feat(moniker): Pass moniker to cleanup stages. (spinnaker#1732) * feat(moniker): Use moniker for app name over frigga in flex (spinnaker#1736) * feat(manualJudgment): allow standard notification types for manual judgment (spinnaker#1739) * fix(dryrun): ignore additional context field
* feat(core/pipeline): Support grouping stages that have a 'group' property (spinnaker#4117) * chore(*): Bump core and amazon module versions (spinnaker#4119) * fix(core): Seatbelt optionalStage directive to make sure stage exists (spinnaker#4121) * style(core): Found and replaced with closest colors for variables in color.less (spinnaker#4120) * removed all colors.less variables in core * Fixed scripting error + color mismatch * removed all colors.less variables in core * Fixed scripting error + color mismatch * Custom variables work only from inside css and not less * Moved the CSS back to less * feat(pipeline): Add pipeline config section for artifacts. (spinnaker#4118) Adds a section to pipeline config for declaring expected artifacts from trigger sources, and adds support in pub/sub triggers to select artifacts the trigger can produce. * fix(pipeline): Artifacts feature flagged off by default. (spinnaker#4126) * Fixed colors for the containers of server groups (spinnaker#4128) * fix(pipelines): fix back link when execution cannot be found (spinnaker#4125) * fix(pipelines): enlarge conditional expression input (spinnaker#4130) * fix(pipelines): refresh relative start time on interval (spinnaker#4129) * refactor(cluster): allow cluster pod header to be customized (spinnaker#4127) * refactor(cluster): allow cluster pod header to be customized * refactor(entityNotifications): refactor export * fix(pipelines): show loading message while fetching version history (spinnaker#4131) * fix(halconfig): add missing comma in halconfig settings.js (spinnaker#4134) * fix(build): revert yarn.lock changes (spinnaker#4136) * chore(core): bump package to 0.0.67 (spinnaker#4138) * refactor(core/formsy): Refactor formsy, create react app-config saver (spinnaker#4132) * feat(core/application): Add 'autoActivate' toggle for DataSources (spinnaker#4139) - Also deprecate DataSourceConfig * fix(search): add supplemental searching capability (spinnaker#4133) * when keyword search is not performed, removes applications and clusters from being searched by the the search API to speed up searching because both can be determined separately. * application information can be retrieved via the applications API endpoint - which is cached.. * cluster information for search results can be determined entirely from server groups. * adds ability to hydrate search results posthumously to add requested, extra information. * chore(core): bump package to 0.0.68 (spinnaker#4141) * refactor(core/formsy): Refactor formsy, create react app-config saver (spinnaker#4132) * feat(core/application): Add 'autoActivate' toggle for DataSources (spinnaker#4139) * fix(search): add supplemental searching capability (spinnaker#4133) * fix(search): add default method value (spinnaker#4142) * add default method value for post search result searchers so that it can intelligently process search result map lookups that don't exist. this is currently an artifact of region searching such that too many search results are found and they're culled in clouddriver so that only instance results come back. we need to change the way the results are returned for the new search to perhaps limit the search results to, say, _n per category_ rather than _n total_. need to have a think about this. * fix(docker) add ProxyPreserveHost On (spinnaker#4122) Signed-off-by: Haiwei Liu <carllhw@gmail.com> * feat(core/presentation): Add client side SpEL evaluator and Input Validator (spinnaker#4140) * fix(search): deduplicate cluster results by name (spinnaker#4145) * chore(deps): Update lodash-decorators to 4.4.1 to prep for switch from @autoBindMethods to @Bindall (spinnaker#4147) * chore(core): bump package to 0.0.69 (spinnaker#4148) * chore(search): update project icon (spinnaker#4151) * update the project search result icon and remove unnecessary fixed with font awesome class. * Fix subnet selection box (spinnaker#4124) * feat(provider/amazon): Show NLBs in the Load Balancer screen and allow NLB target groups to be selected when deploying (spinnaker#4149) * chore(*): Update react to 15.6.2 (spinnaker#4159) * feat(provider/dcos): Enabling strategies for DC/OS. (spinnaker#4158) * fix(react): Do not suppress unhandled rejections in promises. (spinnaker#4155) When react components chain off promises (angular $q promises) for callbacks (`setState()`, etc), any thrown errors would be swallowed by $qProvider.errorOnUnhandledRejections(true) This change will cause more noise in the console, but I think this is a necessary change. When other kinds of rejections occur and spam the console, we should address these cases individually. * fix revision history colors, tweak loading screen (spinnaker#4153) * style(splashscreen): tweak loading message/icon * fix(pipelines): fix revision history row colors * feat(provider/gce): Support named ports for global LBs. (spinnaker#4154) * chore(imports): remove unused import (spinnaker#4160) * Update Tooltip: Pipeline Config -> Property File (spinnaker#4156) Add docs from the 'pipeline expressions' guide about where the contents of the 'Property File' are usable, as well as a link back to the doc: https://www.spinnaker.io/guides/user/pipeline-expressions/ * refactor(*): Remove angular-loader in favor of using `.name` explicitly (spinnaker#4157) * refactor(*): Remove angular-loader in favor of using `.name` explicitly * fix tests * refactor(*): Replace class-autobind-decorator with lodash-decorators BindAll (spinnaker#4150) * chore(search): tweak CSS styles per feedback (spinnaker#4152) * fix(travis) prefer complete buildInfoUrl over composing it. (spinnaker#4143) * chore(core): bump package to 0.0.70 (spinnaker#4163) * chore(amazon): bump package to 0.0.34 (spinnaker#4164) * feat(kubernetes): surfacing timeout override for run job (spinnaker#4162) * feat(provider/gce): Support for connection draining in LBs. (spinnaker#4167) * (docs) Update Tooltip: Bake Configuration -> Base AMI (spinnaker#4161) * updated the not very helpful message in tooltip * updated the tooltip * style(development only): Added linting for colors (spinnaker#4165) * integrated postcss colorfix * Added a static color map * Added a static color map * remove the accidentally added color for testing * Remove postcss less * fix(core): Fix undefined for getting length of commits (spinnaker#4172) * fix: Fix the build. Remove bad @types/angular from yarn.lock (spinnaker#4174) * chore(*): Re-enable source maps (spinnaker#4169) * feat(core): Make HoverablePopover flip sides if there is not room to render on the provided side (spinnaker#4173) * Bump amazon (spinnaker#4170) * chore(*): Re-enable source maps * chore(amazon): bump package to 0.0.35 * chore(docker): bump package to 0.0.5 (spinnaker#4171) * feat(sourceMaps): Embed sources in sourcemaps for lib builds (spinnaker#4175) * fix(projects): restore project header width to 100% (spinnaker#4176) * fix(versionCheck): swallow exception if version.json fetch fails (spinnaker#4177) * chore(core): bump package to 0.0.71 (spinnaker#4178) * fix: Make sure jarDiffs has a default to prevent calling Object.keys on null (spinnaker#4179) * feat(core): versioned cloud provider service (spinnaker#4168) * chore(docker): Load settings-local.js inside docker container (spinnaker#4180) * feat(core): adds settings-local.js for Halyard users (spinnaker#4181) * clone stage now uses moniker (spinnaker#4166) * feat(core/pipeline): Scroll grouped stages popover (spinnaker#4182) * fix(pipeline_template): Cast numeric variable types during plan (spinnaker#4187) * fix(stage): fix default timeout for deploy stage (spinnaker#4186) * style(core/amazon/oracle): Updated spinners to use new designs (spinnaker#4190) * first pass at moving to new spinners * Fixed sizes for spinners * removed header tags for spinners * fix(pipelines): correctly rerender when editing JSON (spinnaker#4192) * updating server group writer to use moniker (spinnaker#4185) * refactor(clusterMatch): tweak cluster match component args, export more in lib (spinnaker#4191) * fix(search): fix advanced search page title (spinnaker#4193) * just set the title and don't try to get fancy with trying to figure out a title based on the search filters. * feat(provider/kubernetes): Register v2 provider (spinnaker#4183) * chore(core): bump package to 0.0.72 (spinnaker#4194) * chore(amazon): bump package to 0.0.36 (spinnaker#4195) * adds filter to only retrieve target cluster (spinnaker#4196) * fix(pipelines): properly sync plan/pipeline/renderablePipeline (spinnaker#4198) * chore(core): bump package to 0.0.74 (spinnaker#4199) * fix(core/pipeline): Fix configure view state callback for MPT (spinnaker#4203) * feat(pipeline): Change Artifact UI to use ExpectedArtifact model. (spinnaker#4202) * fix(artifacts): Get rid of 'unused' linter errors. (spinnaker#4205) * fix(provider/amazon) Enable & fix existing "Create LB" stage (spinnaker#4184) * Enable & fix existing "Create LB" stage INFRA_ENABLED=true env variable will properly enable the feature now. * fix: take out leftover console.log debug message * fix(providers/amazon): Fix editing existing LB Disable the unique name checking for pipeline configs, because if the LB already exists, the config will be overwritten during execution. * fix(providers/amazon): Respond to comments. Cleaned up some bits that were unnecessarily complicated, and still works. * feat(core): Versioned cloud provider deploy select (spinnaker#4201) * style(all): Removed all less color variables and using CSS4 consolidated colors (spinnaker#4204) * Cleaned all colors using colors.less and remove the file * Fixing alerts in pills and tags * more color fixes * feat(provider/aws): Add help text to the LB internal checkbox (spinnaker#4209) * fix(core): correct access modifier from local variable in versionSelector (spinnaker#4210) * refactor(provider/kubernetes): Move v1 code into v1 module (spinnaker#4211) * chore(search): update badge count label (spinnaker#4207) * updates the badge count label to add a `+` sign if the number of search results returned for a search category exceeds the page size sent with the search request. * feat(core): Version account lookup (spinnaker#4212) * fix(rollbacks): support for tolerating some instance failures (spinnaker#4144) * fix(provider/gce) Update max disk number for local-ssd to 8 from 4 (spinnaker#4214) New PR because I'm always going to fail at rebasing against deck correctly. From: https://cloud.google.com/compute/docs/disks/local-ssd#create_local_ssd "Each local SSD is 375 GB in size, but you can attach up to eight local SSD devices for 3 TB of total local SSD storage space per instance" 4 was the old limit Closes spinnaker/spinnaker#1945 * naming service for sequence only uses moniker now (spinnaker#4189) * refactor(moniker): application -> app (spinnaker#4213) * chore(modules): Use webpack-node-externals to exclude node_modules from @spinnaker/* bundles (spinnaker#4215) * fix(pipelines): show indicator when deleting pipeline config (spinnaker#4216) * style(core/amazon/google/kubernetes): Fixed adhoc hexcode colors to use spinnaker palette (spinnaker#4206) * Fixed color warnings from postcss-colorfix * Added github specific colors to styleguide * Fixed color warnings from postcss-colorfix * Added github specific colors to styleguide * chore(chore): bump package to 0.0.75 (spinnaker#4218) * chore(amazon): bump package to 0.0.37 (spinnaker#4219) * chore(tests): enable all tests (spinnaker#4217) * fix(amazon): properly assign credentials when editing load balancers (spinnaker#4221) * chore(amazon): bump package to 0.0.38 (spinnaker#4222) * feat(redblack): Expose `delayBeforeDisableSec` (spinnaker#4223) This allows a user to specify the amount of time that Spinnaker should wait after launching new instances and disabling old server groups or instances. * refactor(core/delivery): Convert execution filters to React (spinnaker#4197) * fix(executions): fix header alignment (spinnaker#4225) * chore(core): bump package to 0.0.77 (spinnaker#4226) * feat(script,jenkins): show contents of properties file (spinnaker#4227) * feat(moniker): adds monikers to stages that includes cluster-selects (spinnaker#4220) * chore(halconfig): lint halconfig/settings.js (spinnaker#4146) * feat(provider/kubernetes): Create manifest (spinnaker#4228) * fix(provider/kubernetes): Adds correct cloudprovider field (spinnaker#4229) Forgot I had this unstaged change before merging the manifest-deploy. Sorry :x * chore(core): bump package to 0.0.78 (spinnaker#4230) * chore(amazon): bump package to 0.0.39 (spinnaker#4231) * fix(core/modal): avoid throwing errors on modal $dismiss (spinnaker#4233) * feat(provider/kubernetes): V2 server group transformer (spinnaker#4232) * fix(core/http): retry http calls failing due to network issues (spinnaker#4234) * chore(core): bump package to 0.0.79 (spinnaker#4236) * fix(network): include backoff, max number of retries in network recovery (spinnaker#4238) * chore(core): bump package to 0.0.80 (spinnaker#4239) * feat(pipelines): use textarea for expression entry (spinnaker#4240) * feat(core): Version server group transformer delegate (spinnaker#4237) * chore(core): Remove some old files and convert a test to ts (spinnaker#4243) * feat(amazon): clarify naming/description on create load balancer/security group (spinnaker#4241) * fix(core): catch modal dismiss (spinnaker#4242) * chore(core): bump package to 0.0.81 (spinnaker#4244) * chore(amazon): bump package to 0.0.40 (spinnaker#4245) * fix(pipelines): guard against missing info on deploy stage (spinnaker#4246) * chore(halconfig): enable versioned providers (spinnaker#4247) * refactor(core): convert create pipeline to react (spinnaker#4248) * fix(core): catch dismiss of confirmation/cancel modals (spinnaker#4250) * chore(core): bump package to 0.0.83 (spinnaker#4251) * fix(provider/gce): Fix credential account handling in svg wizard. (spinnaker#4252) * feat(search): add server groups to clusters * populate the clusters with their server groups so that the availability data can be displayed. * refactor(core/search): Remove client-side fetch of servergroups in favor of culling missing entities on the server * fix(kubernetes): fix template loading (spinnaker#4256) * fix(amazon/securityGroup): Fix lint warning (spinnaker#4255) * refactore(core): Convert ExecutionStatus to react (spinnaker#4254) * fix(core/datasource): Possibly unhandled rejection: undefined (spinnaker#4257) * feat(provider/kubernetes): V2 server group details (spinnaker#4258) * chore(core): bump package to 0.0.84 (spinnaker#4259) * refactor(aws): make transformScalingPolicy method public (spinnaker#4261) * chore(amazon): bump package to 0.0.41 (spinnaker#4262) * refactor(core): Convert executions to react (spinnaker#4260) * fix(pipelines): add validator to webhook stage "method" field (spinnaker#4263) * fix(core): Fix rendering executions that have JSON in the parameters (spinnaker#4264) * feat(artifacts): Simplify expected artifacts (spinnaker#4266) * chore(core): Bump module to 0.0.85 (spinnaker#4265) * chore(core): Remove unused components (spinnaker#4269) * feat(artifact): Custom artifact helpers (spinnaker#4267) * fix(artifact): s/ul/ol (spinnaker#4271) * fix(appengine): allow non-default accounts in deploy dialogue (spinnaker#4270) * fix(appengine): remove unused import (spinnaker#4272) * feat(moniker) - adding monikers to the deploy stage (spinnaker#4268) * refactor(core): Convert executionDetailsSectionNav, executionStepDetails, statusGlyph to react (spinnaker#4273) * fix(core): catch exceptions on server group source when pipeline 404s (spinnaker#4275) * fix(core): Fix configure pipeline links when details is open (spinnaker#4276) * feat(moniker) - adding monikers to load balancers (spinnaker#4278) * chore(core): bump package to 0.0.86 (spinnaker#4277) * feat(provider/kubernetes): v2 resize modal (spinnaker#4279) * fix(provider/openstack): load balancer network and sg creation bugfixes (spinnaker#4281) fix(provider/openstack): Fixed network so it is filtered by account for load balancer creation. fix(provider/openstack): Fixed network so it refreshes when a new account is selected. fix(provider/openstack): Fixed network so it resets to default when a new account is selected and the selected network becomes invalid. fix(provider/openstack): Fixed security groups so it clears and refreshes when a new account is selected. fix(provider/openstack): Fixed security groups refresh button. fix(provider/openstack): Removed security group refresh tooltip that wasn't showing any data. * chore(package): update uirouter libs to latest (spinnaker#4283) * feat(entitytags): Show replaced server group details in popover (spinnaker#4284) As of spinnaker/orca#1705, `orca` is now adding previous server group details to the `spinnaker:metadata` tag. These details include: - previous server group name - image name - image id * chore(appengine): remove edit load balancer feature flag (spinnaker#4285) * fix(azure): retain `this` binding in azure cache initializer (spinnaker#4289) * feat(provider/gae): Specify artifact in GAE deploy from GCS. (spinnaker#4280) Also select between git and GCS during a GAE deploy, and select a storage account accordingly. * fix(core): render reason as HTML in tasks view (spinnaker#4290) * feat(provider/kubernetes): Enable setting of labels on k8s Service objects spinnaker/spinnaker#2035 (spinnaker#4287) * feat(provider/amazon): Rollback support for PREVIOUS_IMAGE strategy (spinnaker#4291) Rolling back to a previous image is available iff: - a `spinnaker:metadata` entity tag exists with `previousServerGroup` details - there are no other server groups in the cluster/region * refactor(core/delivery): Convert ExecutionDetails to react (spinnaker#4282) * chore(core): bump package to 0.0.87 (spinnaker#4292) * chore(core/amazon): make moniker changes library-friendly (spinnaker#4294) * chore(core): bump package to 0.0.88 (spinnaker#4295) * chore(amazon): bump package to 0.0.42 (spinnaker#4293) * refactor(core/delivery): Convert stageFailureMessage to react (spinnaker#4296) * fix(core/amazon): fix application name on server group command (spinnaker#4298) * fix(provider/gce): Render namedPorts in svg details, not listeningPort. (spinnaker#4299) * feat(amazon): Add load balancer dns name to target group details (spinnaker#4300) * fix(core/loadBalancer): Modify shouldComponentUpdate to allow for more specific updates (spinnaker#4302) * fix(amazon/loadBalancer): Modify shouldComponentUpdate to allow for more specific updates (spinnaker#4303) * refactor(*): Fix all the postcss-color warnings except the hard one (spinnaker#4304) * fix(core/loadBalancer): Actually check for all the changes to props (spinnaker#4305) * fix(core): Fix lint (spinnaker#4306) * refactor(core/delivery): Convert waitExecutionDetails to react (spinnaker#4297) * refactor(*): Consistent bracket spacing (spinnaker#4307) * fix(core/amazon): don't show copy capacity options for create server group (spinnaker#4301) * feat(provider/kubernetes): Enable annotations, labels and secrets for security groups (aka ingress resources) (spinnaker#2000) (spinnaker#4235) * fix(core): Navigate to the first stage if passed in stage does not exist (spinnaker#4309) * feat(rrb): Allow for specifying pipelines to run before disable (spinnaker#4308) * bugfix(aws): don't show copy capacity options for clone dialog either (spinnaker#4310) * feat(core): add detail filter to cluster/lb/sg views (spinnaker#4311) * chore(amazon): bump package to 0.0.44 (spinnaker#4312) * chore(core): bump package to 0.0.90 (spinnaker#4313) * fix(core/pipeline): Show errors in time window stage execution details (spinnaker#4315) * refactor(*): Remove duplicate execution details templates (spinnaker#4314) * chore(core): Bump core to 0.0.91 (spinnaker#4316) * chore(amazon): bump to 0.0.45 (spinnaker#4317) * fix(core): handle running execution fetch failure (spinnaker#4319) * fix(core): Fix wait stage task time updating (spinnaker#4320) * feat(core/modal): Silence all rejection warning in console when ui-bootstrap modals are closed/cancelled. * chore(core): bump package to 0.0.92 * fix(core): Fix lint (spinnaker#4321) * fix(core): Fix webpackJsonp not being defined for local dev (spinnaker#4322) * fix(core/executions): tweak padding on details tabs, status glyph (spinnaker#4323) * refactor(*): More execution details refactoring (spinnaker#4324) * fix(core): handle spel expressions in map editors (spinnaker#4325) * chore(core): bump package to 0.0.93 (spinnaker#4326) * feat(trigger/pubsub): Suggest subscriptions from echo configuration. (spinnaker#4328) * fix(amazon): do not set useSourceCapacity on clones (spinnaker#4329) * chore(amazon): bump package to 0.0.46 (spinnaker#4331) * fix(core): Stop grouping groups with only one stage (spinnaker#4332) * chore(core): remove happypack in favor of thread-loader/cache-loader (spinnaker#4330) I was trying to fix lint warnings (which happypack was somehow eating). HappyPack 4.0.0 has [fixed the problem](amireh/happypack#161 (comment)). However, it has also [removed support for caching](amireh/happypack#154 (comment)). There are now loaders which can effectively replace what we used happypack for (thread-loader and cache-loader). * chore(core): Remove console.log statement. (spinnaker#4333) * Cleanup phase 1 * fix(core): Fix groups from breaking executions view (spinnaker#4336) * added ECS help messages * Using our own footer for ECS now * some more cleanup * fix(core): replace word-break CSS with overflow-wrap (spinnaker#4334) * added help pop-ups in the ecs deploy modal * fix(core): Fix unhandled rejection on auth recheck (spinnaker#4335) * using our own ecs server group transformer * refactoring so i can take apart an AWS dependency * refactoring for the win * refactoring for the win * refactoring * progress on serverGroupCommandBuilder.service.js * progress on serverGroupCommandBuilder.service.js * fix(canary): Fix moniker for baseline/canary clusters * chore(core): bump package to 0.0.94 * chore(amazon): bump package to 0.0.47 * Cleaning up ServerGroupConfigurationService * removed security groups from serverGroupConfiguration.service.ts * removed keypairs from serverGroupConfiguration.service.ts * removed clutter * removed clutter: scalingpolicies * removed clutter: hard-coded aws constants * removing entions to aws * removing unused stuff * refactor(core/pipeline): Convert a few execution source details to react (spinnaker#4339) * refactor(core/pipeline): Rerefactor execution details to be less boilerplate-y * refactor(core/pipeline): Convert applySourceServerGroupCapactiyDetails to react * refactor(core/pipeline): Convert checkPreconditionsExecutionDetails to react * added a TODO * added ecs * Merged origin/master & fixed bugs * minor cleaning * ecsCloneServerGroupStage.js * clone server group controller * progress on clone server group controller * progress on clone server group controller * progress cleaning up serverGroupCommandBuilderService * progress on serverGroupCommandBuilder * cleaned instance details * made Amazon health checks Ecs
* feat(pipeline_template): Re-save dependent pipelines on template save (spinnaker#1606) Allows updates to templates that define triggers, params, notifications or concurrency options to cascade changes to downstream pipelines. * chore(expressions): Allow to override global spel version at pipeline level (spinnaker#1607) - Refactored to allow version override at pipeline level * feat(fastproperties): allow individual stage overrides via trigger (spinnaker#1608) * fix(gradle): Pin jedis version (spinnaker#1609) * fix(fastproperty): do not override context on monitor stage (spinnaker#1610) * fix(events): start/end pipeline events broke because of missing toString (spinnaker#1611) * fix(timeout): stage timeout overrides cumulative task durations (spinnaker#1605) * chore(licenses): fix license config and add missing license headers * fix(pipeline_templates): load parent templates when inlining template for plan (spinnaker#1614) * fix(pipeline_template): Multiple fixes from integration suite (spinnaker#1616) * fix(pipeline_template): Correctly handle multiple stage injects * fix(pipeline_template): Fix module rendering in partials * chore(queue): removed envelope handling code we don't use * refactor(queue): queue now uses message hash as the message id This makes de-duping easier and means we can easily re-prioritize messages (PR to follow). * chore(queue): renamed things to make intent clearer * feat(pipeline_template): Convert to pipeline template endpoint (spinnaker#1615) * feat(pipeline_template): Jinja rendering in triggers, params and notifications (spinnaker#1619) * refactor(metrics): more configurable metrics wiring for thread pools * chore(core): simpler handling of parallel stages * fix(queue): re-prioritize message on queue if an identical one is pushed * fix(metrics): missed migrator in refactor of thread pool metrics (spinnaker#1625) * feat(cluster-match): implement general purpose cluster matching rule engine (spinnaker#1579) * fix(canary): target canary cleanup server groups by create date (spinnaker#1612) * fix(pipeline_template): config level stage replacement (spinnaker#1622) * feat(queue): Add queue shovel for migrating backends (spinnaker#1624) * feat(redis_migration): log if there are still pending orchestrations/pipelines (spinnaker#1626) * fix(pipeline_template): root-level configs mapped if undefined (spinnaker#1623) * fix(queue): Fix stupid spring wiring (spinnaker#1628) * feat(servergroup): allow ad-hoc entity tags on deployments (spinnaker#1627) * chore(oortService): expose /serverGroups endpoint (spinnaker#1630) * perf(rollingpush): Avoid unnecessarily searching for instance ids (spinnaker#1633) If a `serverGroupName` or `asgName` is available on the stage context, there is no need to lookup each instance id individually. Also, `getServerGroup()` is more efficient than `getServerGroupFromCluster()` when dealing with clusters containing multiple server groups. * refactor(tag-generator): include server group coordinates in generateTags signature (spinnaker#1634) * fix(pipeline_template): Allow conditional stages inside of partials (spinnaker#1631) * feat(pipeline_template): Allow granular inheritance control on params, triggers, notifications (spinnaker#1632) * fix(stages/bakery): Fix bake stage, ensure deploymentDetails is added to context - Refactor Check Preconditions stage type for parallel stages * feat(pipeline_template): Jinja rendering in partials (spinnaker#1637) Renders the partials' stage config before rendering partials, to allow for more advanced jinja expressions in the partials. * fix(managed_pipeline): validation of variable types, integration tests for invalid pipelines (spinnaker#1629) * refactor(pipeline_template): Support multiple MPT schema versions (spinnaker#1621) Adds the ability to parse different schema versions. This PR doesn't actually change any functionality, except for switching to the new handler API. All existing v1 schema code works the same way it did. Additionally introduced Kotlin to module as new default. * tests(pipeline_templates): integrations tests and removing unique ID (spinnaker#1638) * feat(pipeline_template): Support template-less configurations (spinnaker#1636) * fix(timeouts): some tasks inherit stage timeout override (spinnaker#1640) * fix(pipeline_template): Regression in deserializing tempalted pipeline requests (spinnaker#1644) * fix(pipeline_template): Check for correct paramConfig field during render (spinnaker#1642) * fix(web): Enforce limit of pipelines when using previous redis conn (spinnaker#1646) * fix(redis_migration): fix logging of pending work (spinnaker#1647) * feat(artifacts): Add receivedArtifacts to Pipeline model. (spinnaker#1648) * feat(job): decrease job timout and make overridable (spinnaker#1649) * fix(web): Enforce limit on previous redis for app pipelines endpoint (spinnaker#1650) * fix(pipeline_template): Do not store state in error handler lol (spinnaker#1651) * Revert "feat(artifacts): Add receivedArtifacts to Pipeline model. (spinnaker#1648)" (spinnaker#1653) This reverts commit 0d9a2f1. * fix(web): Revert take calls; unexpected upstream behaviors (spinnaker#1654) * fix(rollbacks): support for tolerating some instance failures (spinnaker#1643) * feat(stage context): Get all stage results in a list (spinnaker#1655) * refactor(clouddriver): monitor clouddriver tasks every 5 seconds (spinnaker#1639) * feat(context): Adds trigger contents to stage context (spinnaker#1659) * feat(clouddriver): Support sharding read-only requests by `user` (spinnaker#1641) This allows you to serve all pipelines/orchestrations generated by a particular user (or set of users) with a dedicated clouddriver read replica. * feat(moniker): Use a cluster's moniker if available. (spinnaker#1664) * Use cluster's moniker if available * Format tests for moniker vs frigga cluster names * chore(expressions): Cleanup some noisy logs (spinnaker#1666) - Include execution id in log message - Remove some noise with debug statements * fix(mine): Search stage definition builders directly instead of depending on stage navigator when trying to cancel canary. * fix(web): Return correct num executions with dual redis (spinnaker#1668) * perf(build): Removing orca-queue-sqs; unused, unsupported * feat(core): Deploy manifest stage & task (spinnaker#1674) * feat(pipeline): Resolve received and expected artifacts in trigger. (spinnaker#1667) * fix(expressions): Include evaluation summary in v2 (spinnaker#1673) - ensure evaluation errors are included in precondition * fix(execution windows): don't add duplicate execution windows to parallel stages * fix(queue): treat waiting pipelines queue as FIFO if keepWaitingPipelines (spinnaker#1677) * feat(pipeline_template): Add marker support to disable rendered value expansion (spinnaker#1665) * feat(get_commits): Display SCM changes in pipeline-triggered pipelines (spinnaker#1652) The changes tab that displays SCM diff between deploys was not showing if the pipeline was triggered by another pipeline. Now it does. * fix(pipeline_template): Propagate nested render errors (spinnaker#1679) * feat(moniker): Allow moniker field to pass through to StageData and TargetServerGroups (spinnaker#1678) * fix(queue): don't keep pushing dead messages indefinitely * feat(qa): dry run pipelines Allow pipelines to run in "dry-run" mode. Stages are proxied and simply test correct evaluation of expressions, optionality, ordering and consistent results. * add executionId to MDC (spinnaker#1682) * fix(rrb): RRB should determine resize percentages at runtime (spinnaker#1681) This PR introduces the ability to specify a `scalePct` when scaling based on the capacity of another server group (scale_to_server_group). Previously all RRB capacity adjustments on the target server group were determined at build time. * Oort get server groups (spinnaker#1680) * Add new clouddriver getServerGroup endpoint * Add new clouddriver getServerGroup endpoint * Removed frigga from oortHelper * Rename oortService method for clearity * Overload getServerGroups and deprecate old prototype * Update test * Also deprecate on the DelegatedOortService * fix(pipeline_template): Fixing regression in test harness (spinnaker#1686) * feat(pipeline_template): PipelineIdTag checks context for variables defining application and name (spinnaker#1688) * fix(log): ensure executionId is cleaned up from MDC (spinnaker#1685) * feat(stages): make FAILED_CONTINUE bubble up from synthetic stages * feat(moniker): Use moniker for instance check task (spinnaker#1689) * feat(moniker): Use monikers within server-group tasks (spinnaker#1693) * fix(log) ensure MDC cleanup occurs in correct thread (spinnaker#1698) * fix(pipeline_template): Do not treat markdown lists as YAML alias (spinnaker#1645) * feat(artifacts): simplify artifact matching (spinnaker#1696) * feat(core): Force cache refresh manifest task (spinnaker#1687) * feat(moniker): use moniker over frigga in ScaleToClusterResize * chore(imports): remove unused frigga import * core(manifest): Delete manifest op (spinnaker#1700) * feat(artifacts): Check if default artifact was intended (spinnaker#1701) * feat(rrb): Support for running a pipeline between scale up and disable (spinnaker#1694) Coordinates for both the new and old server groups are passed along as pipeline parameters. - `delayBeforeDisableSec` -> `getDelayBeforeCleanup()` - support for lookup by stage id in `#stage()` * fix(dryrun): need injected property class to support list of values * Use moniker in DetermineHealthProvidersTask (spinnaker#1702) * feat(moniker): Use moniker for Job stages. (spinnaker#1699) * chore(dependencies): updating spinnaker-depenencies (spinnaker#1707) * feat(queue): update delivery time on runtask (spinnaker#1676) Adds reschedule method to queue, which updated the delivery time of an existing message on the queue. * feat(logging): ops controller annotation + logstashEncoder dep (spinnaker#1692) * fix(dryrun): log dry run activity * Properly cast Moniker from context Properly cast Moniker from context Put the try catch in the MonikerHelper Only check for IllegalArgumentException check existence rather than exception * feat(polling): remove polling for wait, manual judgement, and execution window (spinnaker#1661) * feat(entitytags): Include previous server group image details (spinnaker#1705) This will ultimately facilitate an orchestrated rollback even if the previous server group no longer exists. It relies on the entity tags feature being enabled (dependency on elastic search and not enabled by default in `clouddriver` / `orca`). This PR also introduces some common retry handling (see `RetrySupport`). * fix(entitytags): Do not fetch previous server group for Titus (spinnaker#1712) Subsequent PR will make this work properly for Titus. * fix(gae): Support new ExpectedArtifact in GAE deploy. (spinnaker#1706) * fix(polling): update time left calculation (spinnaker#1713) * fix(dryrun): send dry run notification correctly * fix(propertyFiles): change wording of error message to indicate that there might be a syntax error in the file (spinnaker#1715) * fix(fastproperties): always clean up properties marked for rollback (spinnaker#1717) * feat(core): implement noop stage (spinnaker#1719) * fix(dryrun): remove pipeline config it for dry runs * feat(rollback): Support rolling back to a server group that no longer exists (spinnaker#1716) This PR provides a rollback strategy that will clone forward with the image details that were tagged as part of spinnaker#1705. It also supports the `imageName` being explicitly provided, but that's an exceptional case that would not be supported in the UI. The `spinnaker:metadata` tag will include `buildInfo` for the image if it is returned from `clouddriver`. * fix(runJob): retry fetching property files if not found (spinnaker#1721) * fix(executionWindow): revert to polling (spinnaker#1722) * fix(canary): gentle canary cleanup (spinnaker#1711) * fix(rollback): Propagate `interestingHealthProviderNames` (spinnaker#1723) If `interestingHealthProviderNames` are specified on the parent stage context, propagate them to the clone stage. * fix(dryrun): let Echo remove the pipelineConfigId * fix(dryrun): ignore certain keys in context * fix(cancel): cancel during wait stage (spinnaker#1726) * fix(logging): updating timeout message w/ timeout value (spinnaker#1728) * fix(dryrun): strip nested nulls when comparing context * fix(rrb): Only inject pipeline stage if applicaton + pipelineId present (spinnaker#1729) * fix(tasks): stop using 'shared' task state (spinnaker#1731) * fix(dryrun): try to cope with values that are sometimes floats or ints * fix(manual judgment): switching back to polling to respect timeout overrides (spinnaker#1735) * fix(exec window): leave shared state alone (spinnaker#1737) * Attempt to use moniker before frigga (spinnaker#1697) * feat(moniker): Use moniker for Rollingpush tasks. (spinnaker#1703) * feat(moniker): Pass moniker to cleanup stages. (spinnaker#1732) * feat(moniker): Use moniker for app name over frigga in flex (spinnaker#1736) * feat(manualJudgment): allow standard notification types for manual judgment (spinnaker#1739) * fix(dryrun): ignore additional context field * fix(mahe): do not clean up properties that have been updated (spinnaker#1741) * fix(mahe): fix property extraction on cleanup (spinnaker#1743) * fix(deploy): avoid crossing the streams in parallelized deploys Ensure a deploy stage is getting deployment details from its ancestor and not from global context. * fix(expressions): stop stripping null context values * fix(mahe): send correct query to determine if fast property exists (spinnaker#1747) * fix(canary): fix cleanup of unhealthy canaries with multiple clusters (spinnaker#1749) * fix(security): Prevent webhook users from spoofing authed user * fix(moniker): hotfix canary deploy stages moniker objects are incorrect on canary deploy stages, this removes those objects for now pending a fix of the source problem * fix(mahe): check property structure on cleanup (spinnaker#1752) * fix(fastproperties): Processing expressions in property override (spinnaker#1754) - Explicitly processing expressions in property stage override * fix(triggers): ensure canceling pipeline sends ExecutionComplete event (spinnaker#1753) * feat(core): Wait for manifest stable task (spinnaker#1755) * fix(context): stop looking for properties in trigger until we can figure out what is going on * fix(titus): Tag titus server groups with previous image metadata (spinnaker#1758) * chore(canary-v2): Update to new json-based initiate canary entrypoint. (spinnaker#1756) * fix(front50): Keep front50 optional (spinnaker#1760) * Revert "fix(deploy): avoid crossing the streams in parallelized deploys" This reverts commit f496530. * fix(canary-v2): Avoid naming collision between mine/kayenta tasks. (spinnaker#1761) * feat(orca) Place produced artifacts in stage output (spinnaker#1441) * feat(artifacts): Resolve expectedArtifact by ids in trigger. (spinnaker#1763) * fix(trafficguards): adds retry logic to validateClusterStatus (spinnaker#1759) * fix(front50): Don't try to run dependent pipelines that are disabled * chore(dependencies): Bump spinnaker-dependencies to 0.120.1 (spinnaker#1765) Should fix the Artifact.metadata serialization issue. * fix(pipeline_template): Resave all pipelines on template update (spinnaker#1766) * fix(rollingpush): Ensure `waitTaskState` is cleared between iterations (spinnaker#1767) * feat(moniker): Use moniker in TrafficGuard. (spinnaker#1727) * feat(moniker): Use monker in TrafficGuard. * Check for null monikers and fall back on frigga * Formatting * Refactor * Pass moniker to validateClusterStatus() * Style cleanup * fix(core): `DetachInstancesTask` should have traffic guards (spinnaker#1768) * fix(orca/canary): Don't presume array present (spinnaker#1770) In at least one case of total canary stage failure, the deployedClusterPairs context variable doesn't get set at all, resulting in a null value -- this avoids the "Cannot invoke method getAt() on null object" error message that results from trying to dereference the zero'th element in this case. * chore(gradle): Avoid running tests on master/release branch (spinnaker#1769) * fix(manifest): Fix delete behavior (spinnaker#1774) * chore(gradle): Avoid running junit platform tests on master/release branch (spinnaker#1775) * feat(core): Add correlation ids to orchestrations (spinnaker#1748) Allows us to repeatedly send orchestrations with the same correlation id and only running a single one. Pre-req for keel. * fix(canary): fix wait task after baseline asg disable (spinnaker#1771) * fix(pipeline_template): Deal with whitespace in jinja module kv pairs (spinnaker#1773) * fix(web): Make trigger map mutable (spinnaker#1776) * Fixes restarting ACA task stages (spinnaker#1777) fix(aca): Fix restarting ACA task stage * Use StageContext consistently without breaking strategies (spinnaker#1772) fix(expressions): Ensure StageContext is always present on Stage instances * fix(front50): Avoid canceling an already canceled child pipeline (spinnaker#1779) This PR also propagates some details about the particular stage that failed such that `deck` can render an appropriate link. * fix(log): clarify missing custom strategy error (spinnaker#1780) * fix(trafficguards): Fix Moniker usage in instance termination (spinnaker#1781) The instance termination task does not normally have a `serverGroupName` explicitly specified. Without such, the moniker used to check traffic guards is invalid. * fix(mpt): don't NPE on stages without a when (spinnaker#1783) * feat(pipeline_template): Render configuration for templated pipelines with dynamic source (spinnaker#1718) * Will render using a specific execution, or the latest if a specific one is not set. * fix(netflix): do not send property value when looking up existing property (spinnaker#1785) * refactor(model): Unify execution subtypes * refactor(model): move properties from pipeline & orchestration up * refactor(model): make Execution non-abstract * refactor(model): introduce execution type enum and use instead of instanceof * refactor(model): unify retrieve & delete methods in repository * refactor(model): unify retrieve observable methods in repository * refactor(model): convert all refs to Pipeline / Orchestration to Execution * refactor(model): clean up Kotlin property syntax * refactor(model): fix one class/test I missed * refactor(model): migrate queue messages to new `executionType` format * refactor(model): change enums to uppercase * refactor(model): change enums to uppercase * refactor(model): rebase hell * refactor(model): typo * fix(web): Reverting needless method sig refactor from spinnaker#1718 (spinnaker#1786) * fix(core): s/orchestrationLauncher/executionLauncher (spinnaker#1787) * fix(queue): custom de/serializer so we can migrate queue values slowly * chore(logging): shut up spammy logs in integration tests * fix(core): Support wait before scaling down in red/black (spinnaker#1789) Set `delayBeforeScaleDownSec` in your stage context. * fix(metrics): derive executionType tag from type not class name * fix(*): fix startup failure if pipeline templates are not enabled (spinnaker#1792) * fix(pipeline trigger): fix error when parsing parent pipeline with no type * chore(dependencies): upgrade Spring and Jackson * chore(dependencies): simpler defaulting of execution type * fix(tags): stop dumb failures in cleaning up astrid tags * fix(triggers): typo in previous fix * fix(notifications): send correct notification type on pipeline events (spinnaker#1795) * feat(clouddriver/aws): Allow finding SG vpc IDs by name (spinnaker#1784) * feat(pagerduty): Support multiple applications and keys directly (spinnaker#1797) * fix(mort): Flippy-floppy equalsIgnoreCase to avoid NPE (spinnaker#1800) * fix(pagerduty): Fix paging by keys only (spinnaker#1801) * feat(provider/kubernetes): undo rollout stage (spinnaker#1802) * feat(provider/kubernetes): scale manifest (spinnaker#1803) * chore(dependencies): dependency updates gradle 3.5 spinnaker-gradle-plugin 3.17.0 spinnaker-dependencies 0.122.0 * feat(provider/kuberntes): pause/resume rollout (spinnaker#1806) * chore(core): Use `RetrySupport` from `kork-exceptions` (spinnaker#1807) * feat(pagerduty): Automatically append 'from' to the details map (spinnaker#1808) * feat(manifest): more robust status handling (spinnaker#1809) * fix(kubernetes/rollback) Pass cloudProvider to tasks so it doesn't default to aws (spinnaker#1810) * fix(moniker): Use the correct moniker when applying source server group (spinnaker#1805) * feat(canary-v2): Add region attributes to kayenta stage. (spinnaker#1813) * fix(trafficguards): debug logging when no enabled asgs found (spinnaker#1814) * chore(dependencies): bump Kotlin to 1.1.60 * chore(dependencies): bump JUnit * fix(alerts): fix formatting of log message for global context alert * fix(timeouts): prevent stageTimeoutMs ending up in outputs/global * Xenial builds (spinnaker#1819) * feat(xenial_builds): Added Orca systemd service config. * chore(dependencies): update to latest spinnaker-dependencies version * refactor(expressions): Remove v1 SPEL code (spinnaker#1817) - Making v2 as the default engine for expressions - More improvements on the way * chore(dependencies): bump Mockito and Hamkrest * fix(fastproperties): prevent FP stuff getting written to global context * chore(dependencies): bump Kotlin to 1.2 * fix(templates): Tolerate all thrown failures on execution lookup. (spinnaker#1822) * feat(provider/kubernetes): insert artifacts during deploy (spinnaker#1823) * Make WaitForClusterDisableTask configurable in yml (spinnaker#1824) * fix(core): Missing closing brace (spinnaker#1826) * chore(systemd_logs): Remove unneeded log redirection. (spinnaker#1825) * feat(artifacts): support 'use prior execution' (spinnaker#1827) * fix(fastproperties): correct separation of context and output values in FP stage * chore(mahe): remove mahe (spinnaker#1830) * fix(expressions): expressions can reference prior stage outputs (spinnaker#1828) * fix(expressions): expressions can reference prior stage outputs * feat(provider/kubernetes): deploy from artifact (spinnaker#1831) * feat(pipeline_template) Add strategyId tag to render ids by application and strategy name (spinnaker#1833) * fix(moniker): fix cluster if detail is set to empty via SpEL (spinnaker#1832) * fix(job): retry on call to clouddriver for job status (spinnaker#1834) * feat(pipeline_template) Allow partials to be injected from template configuration. (spinnaker#1798) * Removed a method that was added twice during the merge. * Implemented getRegion for EcsImageDetails.
This will ultimately facilitate an orchestrated rollback even if the
previous server group no longer exists.
It relies on the entity tags feature being enabled (dependency on
elastic search and not enabled by default in
clouddriver
/orca
).This PR also introduces some common retry handling (see
RetrySupport
).