In some scenarios, it is required to categorize the parameter.
Associating tags with the parameter, it is will be easy to
categorize the parameter and add simple validations to users.
This patch introduces a new attribute 'tags' with the parameters,
which is a list of strings.
Change-Id: I20fc95d606b0b8a08d3b46bf33f4860bff49c74f
Add converge parameter for stack update API and RPC call,
that allow triggering observe on reality. This will be
triggered by API call with converge argument (with True
or False value) within. This flag also works for resources
within nested stack.
Implements bp get-reality-for-resources
Change-Id: I151b575b714dcc9a5971a1573c126152ecd7ea93
The delete_stack() RPC call in the client can be sent using either call()
or cast(), with cast() the default. This is never what you want, because
the call could raise an exception and you want to hear about that.
We're now passing cast=False explicitly everywhere. We always were in
heat-cfn-api and heat-api, but failing to do so in StackResource caused bug
1499669, which was corrected by I039eb8f6c6a262653c1e9edc8173e5680d81e31b.
Changing the default to call() will prevent anyone making that same mistake
again.
Change-Id: Idd6a27988dadbf1cd8376de24b19f2226f6ae5b7
Related-Bug: #1499669
This change adds project information of software configs
if using admin context.
Change-Id: Ia26919aa1177a9366c65710becb2097b79e02445
Closes-Bug: #1646312
Add 'with_condition_func' filter param for API
template-function-list, if the param set to true,
the response will include the condition functions.
Change-Id: Icdfbafbb98698373648ff2d78db3c45fe2b924ee
Closes-Bug: #1625505
A modulo constraint will be used to restrict numeric values to
leave a certain remainder when divided with certain divisor.
E.g. we can use this to constrain values to even/odd numbers.
Change-Id: I9d7db4307be2a2b93cc928cf5912af7b49c72076
Run `heat-manage migrate-convergence-1 <stack_id>` to migrate
legacy stack to convergence engine.
Heat engine is used for doing migration i.e. migration can't
be done offline.
Change-Id: Ie7c2498b37937438f16d154b154b3a6ecbf9ff74
Implements-bp: convergence-migrate-stack
We can use admin_context to have access to stacks
and software configs across projects. This removes
the tenant_safe flag from rpc and db api. This is
backward compatible with older rpc clients.
We still support use of global_tenant flag for listing
stacks and software configs. However, by default
an admin(user with admin role in admin_project)
would not need that.
Change-Id: I12303dbf30fb80290f95baba0c67cdf684f5f409
Adds 'description', 'tags' and 'updated_at' for stack
notification for projects such as Searchlight to store
stack metadata.
Change-Id: I7067e6649661d88cb86b4021a27ebbb6393cc7af
Closes-Bug: #1603163
Similar to the recent addition that enables retrieval of the current
environment for a stack, this enables reading the current files map
for a running stack, which is useful if you want to introspect the
current state, and/or deploy another similar stack without necessarily
having the exact command/repo used initially.
APIImpact
Implements: blueprint files-show
Change-Id: I3198b6a7dc06648af24c198d39470f3b0d5d6f11
Implements a cancel message sending mechanism.
A cancel message is sent to heat engines working on the stack.
Change-Id: I3b529addbd02a79364f7f2a041fc87d5019dd5d9
Patial-Bug: #1533176
The GET call to list events will support a nested_depth parameter. The
response will have an additional links url with the ref 'root_stack'
to indicate that this API supports nested_depth queries.
This has the following consequences for old/new combinations of
client/server
- new heatclient, new server - nested_depth param is set, server
returns nested events
- new heatclient, old server - nested_depth param is set, server
returns events with no root_stack, heatclient falls back to
recursive event fetch
- old heatclient, new server - nested_depth param is never set,
recursive event fetch works as before
Here are some timings for a TripleO overcloud stack with ~700 events.
Current heat and python-heatclient master:
time openstack stack event list --nested-depth 4 overcloud |wc -l
744
real 0m17.500s
This change, with heatclient 31278ff5f77b152b5ef7a4197e15c441c72ff163:
time openstack stack event list --nested-depth 4 overcloud |wc -l
608
real 0m1.725s
The difference in event count (744 vs 608) is due to the stack events
being filtered out for stacks with zero resources - these are a source
of unnecessary noise so their removal should be considered an improvement.
Closes-Bug: #1588561
Change-Id: I27e1ffb770e00a7f929c081b2a505e2007f5d584
This allows us to pre-store a template in the database before
creating/updating a stack over RPC, so that we don't need to send the
contents over RPC. This will help us safely de-duplicate files dicts in
the database, reduce the size of messages, and prevent unnecessary
copies of files (in particular) being loaded into memory.
Change-Id: Id1990d5cbac8b3954ce224af73425d4fd8db17d6
Adds a call to the REST API to retrieve the environment for a running
stack.
APIImpact
Implements: blueprint environment-show
Change-Id: I7e3577dfc854018245d79afdfee45a9d250d73a7
This changes the way SoftwareDeployment updates its internal status.
Instead of querying the deployment status in a loop using RPC client, it
makes a single call, which returns once the status has been updated.
Closes-Bug: #1549219
Change-Id: I484b7c8cb4a4e71817be6bea764f23b68a39b2d4
There may exist resources that the user (or application) knows are
unhealthy where Heat has no way of determining that.
Add a PATCH handler to the Resource endpoint::
/stacks/<stack_name>/<stack_id>/resources/<resource_id>
The PATCH method will accept a JSON body of the form::
{
'mark_unhealthy': <bool>,
'resource_status_reason': <string>
}
This patch Implements:
- RPC API to mark resources as CHECK_FAILED in both the legacy and
convergence architectures in heat-engine
- ReST front end to the RPC API call in heat-api
Change-Id: Ifa48b179723a2100fff548467db9e162bc669d13
Partially-implements: blueprint mark-unhealthy
The oslo.utils.reflection.get_class_name() handles more variations
of where a class name may come from (on) python 2 and python 3.
Its usage allows getting more accurate class names so we'd better use it.
Change-Id: Iff0e109a558d0185f126781369bac216da930bca
Adds additional parameter ignore_errors to ignore set
of errors during the template valation in API.
APIImpact
implements blueprint heat-template-validate-improvements
Change-Id: Ib8a6d6be4509857bbc90c8f604a882b7a706da10
Adds an optional list of environment files that can be specified instead
of resolving multiple environments client-side. This change covers both
the REST API changes and the internal RPC API changes.
APIImpact
Implements: blueprint multi-environments
Change-Id: I45fb9d4480f6ab4e5fe30cb2e3b62a03777484c7
For some reason we were using constants from a different data structure
(the resource schema) as field names in the resource data structure, even
though the names made no sense, just because they happened to have the
value we wanted. This change defines properly-named constants and puts them
in the RES_KEYS tuple where they belong.
Change-Id: Ia47ba64d85f0f4b93ba242b6d54e7f318fac7481
The RPC API call describe_stack_resource is used by two separate ReST API
calls and one CFN API call: Resource.show and Resource.metadata in heat-api
and StackController.describe_stack_resource. The metadata call in
particular throws away all of the results of the describe_stack_resource
output except for the metadata itself. Either this call or the cfn one
(depending on configuration) is also used very, very often: it's the one
that every instance running os-collect-config polls for information about
software deployments (so, to a first approximation, every server in every
stack will be calling this once every 30s).
Since blueprint detailed-resource-show merged in
6d8a5cb35c, every call to the RPC
describe_stack_resource API has resulted in Heat fetching the attribute
values for every single attribute in the resource from its corresponding
OpenStack API (including those calls originating from a request for just
the metadata, or from the cfn API which similarly discards the attribute
values).
This is insanely inefficient (we're making OpenStack API calls to fetch
data that we don't even return to the user). It's quite possibly a
substantial part of the reason why we've had so much difficulty scaling up
Heat to deal with large numbers of servers polling it for config. And it
tends to leave a lot of annoying warnings in the log messages, not just of
Heat but also the other services it is polling, since polling the metadata
generally happens using the heat_stack_user's credentials, not those of the
actual owner of the resource - it can't actually find the resource and
returns a 404.
The fix is to change the default "with_attr" value in the RPC client to
False, and only pass None (the previous default) or a list of extra
attributes to include in the specific case where the ReST API will actually
return the attribute values to the user and not just discard them. Since
the server previously treated any falsey value for the parameter (e.g.
None, False or []) as equivalent, and since nothing was previously passing
False, this change is safe to backport to stable branches. The api and
engine can be updated in any order without change in behaviour until a new
api is talking to a new server (at which point the bug is fixed).
This change also updates the ReST API unit tests to accurately reflect the
data returned from the engine.
Change-Id: Ifffeaa552d3205ca06a79adda09d35a77099a2bf
Closes-Bug: #1507568
Adds RPC client api for export action and test cases.
RPC_VERSION = 1.22
Partial-Bug: #1353670
Co-Authored-By: Jason Dunsmore <jasondunsmore@gmail.com>
Change-Id: I88ef9bba073bf4e730e1dae114a9c5d3b856ca13
There is currently a race condition where software deployment populates
its metadata when being created, before the parent resource receives an
ID. This creates a window where the metadata is available but the
resource can't be signalled. This fixes it by providing the creation ID.
Change-Id: If58679138db95cf1da7ab5a4906217da446a391f
Closes-Bug: #1532445
Add resolve_outputs parameter to stack_show. It allows user
to get stack data without resolving outputs. It is needed because
of 2 reasons:
1) We have output_show an output_list already in our API
2) Such resolving can consume a huge amount of time, but user may
want to resolve only several or none outputs.
@APIImpact, @DOCImpact
Change-Id: I03104efc535a7bd4326cbec56c01cd887db38ab6
Wrong usage of "a" in the mesages:
"a integer representing the number of matched stacks"
"Send a signal and a exception will raise"
Should be:
"an integer representing the number of matched stacks"
"Send a signal and an exception will raise"
Totally 3 occasion in Heat base code.
Change-Id: Ic5ff16dd8d31d4573490ac423f7457e75b872e6b
APIImpact
Add new APIs for showing and listing stack outputs.
It can be used by heat client and separately for
getting stack outputs.
implements bp api-call-output
Change-Id: Ia24b24f59e2c592801e4e670ba5510f642ecf45c
Adds an optional flag that causes template-validate to recursively
validate nested stacks and expose a schema of the parameters for
all stacks in the tree. This uses a similar method to stack preview
in that it builds the tree in memory so we can then walk it and
extract the parameter data we need.
Change-Id: I7e3d752124997a0a7b8ff53e774ed8034dd2f81d
Co-Authored-By: Jay Dobies <jdobies@redhat.com>
Implements-blueprint: nested-validation
Currently we redefine the value of Default when a user value is
provided, which means the data returned doesn't match the schema
defined in the template. Instead always return the actual default
and add a "Value" key that contains the user value, if provided.
Change-Id: If4ed0b733d4e61c84167063c36cdcb234b001136
Closes-Bug: #1497310
heatclient already supplies the files map, as for create/update
but the API and RPC interfaces ignore it. So wire in the optional
files map, which will enable moving to validation logic which
more closely aligns with the create/update code.
Change-Id: I32a4b8d8c02829398f4792fcb06783ce9233b645
Co-Authored-By: Jay Dobies <jdobies@redhat.com>
Partial-Bug: 1467573
Adds name and version parameters to the resource type
filterings
implements blueprint heat-resource-type-search
APIImpact
Change-Id: I7500d5c56ce252bf8c0a9ae7a188a8cb25e643ce