Skip to content

Commit

Permalink
aws - redshift - reserved node resource (#5844)
Browse files Browse the repository at this point in the history
  • Loading branch information
csabella committed Jun 8, 2020
1 parent 9d01edf commit 2faa9ff
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 0 deletions.
15 changes: 15 additions & 0 deletions c7n/resources/redshift.py
Original file line number Diff line number Diff line change
Expand Up @@ -988,3 +988,18 @@ def process(self, snapshots):
', '.join(
[s['SnapshotIdentifier'] for s in futures[f]]),
f.exception()))


@resources.register('redshift-reserved')
class ReservedNode(QueryResourceManager):

class resource_type(TypeInfo):
service = 'redshift'
name = id = 'ReservedNodeId'
date = 'StartTime'
enum_spec = (
'describe_reserved_nodes', 'ReservedNodes', None)
filter_name = 'ReservedNodes'
filter_type = 'list'
arn_type = "reserved-nodes"
permissions_enum = ('redshift:DescribeReservedNodes',)
1 change: 1 addition & 0 deletions c7n/resources/resource_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@
"aws.redshift": "c7n.resources.redshift.Redshift",
"aws.redshift-snapshot": "c7n.resources.redshift.RedshiftSnapshot",
"aws.redshift-subnet-group": "c7n.resources.redshift.RedshiftSubnetGroup",
"aws.redshift-reserved": "c7n.resources.redshift.ReservedNode",
"aws.rest-account": "c7n.resources.apigw.RestAccount",
"aws.rest-api": "c7n.resources.apigw.RestApi",
"aws.rest-resource": "c7n.resources.apigw.RestResource",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"status_code": 200,
"data": {
"ReservedNodes": [
{
"ReservedNodeId": "1ba8e2e3-bc01-4d65-b35d-a4a3e931547e",
"ReservedNodeOfferingId": "ceb6a579-cf4c-4343-be8b-d832c45ab51c",
"NodeType": "dc2.xlarge",
"StartTime": "2020-06-07T11:08:39.051Z",
"Duration": 31536000,
"FixedPrice": 1380.0,
"UsagePrice": 0.0,
"CurrencyCode": "USD",
"NodeCount": 1,
"State": "active",
"OfferingType": "All Upfront",
"RecurringCharges": [
{
"RecurringChargeAmount": 0.0,
"RecurringChargeFrequency": "Hourly"
}
],
"ReservedNodeOfferingType": "Regular"
}
],
"ResponseMetadata": {}
}
}
15 changes: 15 additions & 0 deletions tests/test_redshift.py
Original file line number Diff line number Diff line change
Expand Up @@ -742,3 +742,18 @@ def test_disable_s3_logging(self):
result.pop('ResponseMetadata')

self.assertFalse(result["LoggingEnabled"])


class TestReservedNode(BaseTest):
def test_redshift_reserved_node_query(self):
session_factory = self.replay_flight_data("test_redshift_reserved_node_query")
p = self.load_policy(
{
"name": "redshift-reserved",
"resource": "aws.redshift-reserved"
},
session_factory=session_factory,
)
resources = p.run()
self.assertEqual(len(resources), 1)
self.assertEqual(resources[0]["ReservedNodeId"], "1ba8e2e3-bc01-4d65-b35d-a4a3e931547e")

0 comments on commit 2faa9ff

Please sign in to comment.