Skip to content

Commit

Permalink
Add LocalStack support
Browse files Browse the repository at this point in the history
  • Loading branch information
iann0036 committed Oct 7, 2023
1 parent 2624e41 commit 0c8a797
Show file tree
Hide file tree
Showing 7 changed files with 147,648 additions and 88,706 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Former2

[![CloudFormation](https://img.shields.io/badge/CloudFormation-100%25-orange.svg)](RESOURCE_COVERAGE.md#cloudformation-resource-coverage) [![Terraform](https://img.shields.io/badge/Terraform-49%25-blue.svg)](RESOURCE_COVERAGE.md#terraform-coverage)
[![CloudFormation](https://img.shields.io/badge/CloudFormation-84%25-orange.svg)](RESOURCE_COVERAGE.md#cloudformation-resource-coverage) [![Terraform](https://img.shields.io/badge/Terraform-49%25-blue.svg)](RESOURCE_COVERAGE.md#terraform-coverage)

> Generate CloudFormation / Terraform / Troposphere templates from your existing AWS resources
Expand Down
9,945 changes: 5,753 additions & 4,192 deletions RESOURCE_COVERAGE.md

Large diffs are not rendered by default.

11 changes: 10 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1389,13 +1389,22 @@ <h5>Default Output</h5>
</div>
<br />
<div class="form-group">
<h5>Irrelevant Resources&nbsp;<span data-tippy-content="Experimental"><i class="fa fa-warning" style="color: #f29824;"></i></span></h5>
<h5>Irrelevant Resources</h5>
<p>When enabled, this setting will skip resources considered irrelevant (currently only CloudWatch Log Streams):</p>
<div class="checkbox-toggle">
<input type="checkbox" id="skipirrelevantresources">
<label for="skipirrelevantresources">Skip Irrelevant Resources</label>
</div>
</div>
<br />
<div class="form-group">
<h5>Custom Endpoints&nbsp;<span data-tippy-content="Experimental"><i class="fa fa-warning" style="color: #f29824;"></i></span></h5>
<p>When enabled, this setting will use the LocalStack endpoint (localhost:4566):</p>
<div class="checkbox-toggle">
<input type="checkbox" id="uselocalstackendpoint">
<label for="uselocalstackendpoint">Use LocalStack Endpoint</label>
</div>
</div>
</div>
<div class="col-md-1"></div>
<div class="col-md-5">
Expand Down
15 changes: 15 additions & 0 deletions js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -1578,6 +1578,13 @@ $(document).ready(function(){
window.localStorage.setItem('skipirrelevantresources', $(this).is(':checked').toString());
});

if (window.localStorage.getItem('uselocalstackendpoint') == "true") {
$('#uselocalstackendpoint').prop('checked', true);
}
$('#uselocalstackendpoint').change(function() {
window.localStorage.setItem('uselocalstackendpoint', $(this).is(':checked').toString());
});

if (window.localStorage.getItem('includedefaultresources') == "true") {
$('#includedefaultresources').prop('checked', true);
include_default_resources = true;
Expand Down Expand Up @@ -1751,6 +1758,7 @@ function saveSettings() {
'iaclangselect': window.localStorage.getItem('iaclangselect') || 'typescript',
'relatedresourcessetting': window.localStorage.getItem('relatedresourcessetting'),
'skipirrelevantresources': window.localStorage.getItem('skipirrelevantresources'),
'uselocalstackendpoint': window.localStorage.getItem('uselocalstackendpoint'),
'includedefaultresources': window.localStorage.getItem('includedefaultresources')
}
};
Expand Down Expand Up @@ -1800,6 +1808,13 @@ function loadSettings() {
$('#skipirrelevantresources').prop('checked', false);
}
}
if ('uselocalstackendpoint' in loaded_settings.settings) {
if (loaded_settings.settings.uselocalstackendpoint == "true") {
$('#uselocalstackendpoint').prop('checked', true);
} else {
$('#uselocalstackendpoint').prop('checked', false);
}
}
if ('includedefaultresources' in loaded_settings.settings) {
if (loaded_settings.settings.includedefaultresources == "true") {
$('#includedefaultresources').prop('checked', true);
Expand Down
52 changes: 40 additions & 12 deletions js/datatables.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,14 @@ function lambdaRuntimeFormatter(data) {

function sdkcallwaiter(svc, method, params1, params2) {
return new Promise(function (resolve, reject) {
var service = new _AWS[svc]({ region: region });
var serviceoptions = { region: region };
if (window && window.localStorage.getItem('uselocalstackendpoint') == "true") {
serviceoptions['accessKeyId'] = 'test';
serviceoptions['secretAccessKey'] = 'test';
serviceoptions['sessionToken'] = null;
serviceoptions['endpoint'] = 'http://localhost:4566';
}
var service = new _AWS[svc](serviceoptions);

service[method].call(service, params1, params2, async function (err, data) {
resolve();
Expand All @@ -225,14 +232,29 @@ function sdkcall(svc, method, params, alert_on_errors, backoff) {
f2debug(String(svc) + "." + String(method) + " - " + JSON.stringify(params));

return new Promise(function (resolve, reject) {
var service = new AWS[svc]({ region: region, customUserAgent: 'former2/latest' });
var serviceoptions = { region: region, customUserAgent: 'former2/latest' };
if (svc == "GlobalAccelerator") {
service = new AWS[svc]({ region: 'us-west-2', customUserAgent: 'former2/latest' });
serviceoptions['region'] = 'us-west-2';
} else if (svc == "CostExplorer") {
service = new AWS[svc]({ region: 'us-east-1', customUserAgent: 'former2/latest' });
serviceoptions['region'] = 'us-east-1';
} else if (svc == "DynamoDB") {
service = new AWS[svc]({ region: region, customUserAgent: 'former2/latest', dynamoDbCrc32: false });
serviceoptions['dynamoDbCrc32'] = false;
}
if (window && window.localStorage.getItem('uselocalstackendpoint') == "true") {
serviceoptions['accessKeyId'] = 'test';
serviceoptions['secretAccessKey'] = 'test';
serviceoptions['sessionToken'] = null;
serviceoptions['endpoint'] = 'http://localhost:4566';

if (svc == "STS" && method == "GetCallerIdentity") {
resolve({
Account: "000000000000",
Arn: "arn:aws:iam::000000000000:user/localstackuser",
UserId: "AKIAI44QH8DHBEXAMPLE"
});
}
}
var service = new AWS[svc](serviceoptions);

service[method].call(service, params, async function (err, data) {
if (err) {
Expand Down Expand Up @@ -265,6 +287,10 @@ function sdkcall(svc, method, params, alert_on_errors, backoff) {
f2log("Skipping " + svc + "." + method + " ForbiddenException");
} else if (err.code == "AccessDeniedException" && svc == "FSx") {
f2log("Skipping " + svc + "." + method + " AccessDeniedException");
} else if (err.code == "UnknownError" && window && window.localStorage.getItem('uselocalstackendpoint') == "true") {
f2log("Skipping " + svc + "." + method + " UnknownError when in LocalStack mode");
} else if (err.code == "InternalFailure" && window && window.localStorage.getItem('uselocalstackendpoint') == "true") {
f2log("Skipping " + svc + "." + method + " InternalFailure when in LocalStack mode");
} else if (alert_on_errors) {
f2log("Error calling " + svc + "." + method + ". " + (err.message || JSON.stringify(err)));
f2trace(err);
Expand All @@ -278,13 +304,15 @@ function sdkcall(svc, method, params, alert_on_errors, backoff) {
type: 'danger'
});
} else if (err.retryDelay) {
$.notify({
icon: 'font-icon font-icon-warning',
title: '<strong>Error calling ' + svc + '.' + method + '</strong>',
message: 'Credentials may not be correctly configured'
}, {
type: 'danger'
});
if (window && window.localStorage.getItem('uselocalstackendpoint') != "true") {
$.notify({
icon: 'font-icon font-icon-warning',
title: '<strong>Error calling ' + svc + '.' + method + '</strong>',
message: 'Credentials may not be correctly configured'
}, {
type: 'danger'
});
}
} else {
$.notify({
icon: 'font-icon font-icon-warning',
Expand Down
5 changes: 5 additions & 0 deletions js/mappings.js
Original file line number Diff line number Diff line change
Expand Up @@ -2786,6 +2786,11 @@ function outputMapCli(service, method, options, region, was_blocked) {
}

async function generateDiagram() {
if (window && window.localStorage.getItem('uselocalstackendpoint') == "true") {
clearDiagram();
return;
}

if (tracked_resources.length < 1) {
clearDiagram();
return;
Expand Down
Loading

0 comments on commit 0c8a797

Please sign in to comment.