├── .editorconfig
├── .gitattributes
├── .gitignore
├── .idea
├── libraries
│ └── bellerophon_node_modules.xml
└── watcherTasks.xml
├── LICENSE
├── README.md
├── bower.json
├── gulpfile.js
├── package.json
├── src
├── availableresources.js
├── fonts
│ └── poiretone.woff2
├── icons
│ ├── AWS-EC2-Container-Registry.svg
│ ├── AmazonWorkDocs.svg
│ ├── AmazonWorkMail.svg
│ ├── AmazonWorkSpaces.svg
│ ├── Analytics_AmazonEMR.svg
│ ├── Analytics_AmazonEMR_Cluster.svg
│ ├── Analytics_AmazonEMR_Engine.svg
│ ├── Analytics_AmazonEMR_HDFS_Cluster.svg
│ ├── Analytics_AmazonEMR_MapRM3Engine.svg
│ ├── Analytics_AmazonEMR_MapRM5Engine.svg
│ ├── Analytics_AmazonEMR_MapRM7Engine.svg
│ ├── Analytics_AmazonElasticsearch.svg
│ ├── Analytics_AmazonMachineLearning.svg
│ ├── Analytics_AmazonQuickSight.svg
│ ├── Analytics_DataPipeline.svg
│ ├── Analytics_Kinesis.svg
│ ├── Analytics_Kinesis_Analytics.svg
│ ├── Analytics_Kinesis_EnabledApp.svg
│ ├── Analytics_Kinesis_Firehose.svg
│ ├── Analytics_Kinesis_Streams.svg
│ ├── ApplicationServices_APIGateway.svg
│ ├── ApplicationServices_AmazonCloudSearch.svg
│ ├── ApplicationServices_AmazonCloudSearch_SDFmetadata.svg
│ ├── ApplicationServices_AmazonElasticTranscoder.svg
│ ├── ApplicationServices_AmazonSES.svg
│ ├── ApplicationServices_AmazonSES_Email.svg
│ ├── ApplicationServices_AmazonSQS.svg
│ ├── ApplicationServices_AmazonSQS_Message.svg
│ ├── ApplicationServices_AmazonSQS_Queue.svg
│ ├── ApplicationServices_AmazonSWF.svg
│ ├── ApplicationServices_AmazonSWF_Decider.svg
│ ├── ApplicationServices_AmazonSWF_Worker.svg
│ ├── ApplicationServices_AppStream.svg
│ ├── Compute_AmazonEC2.svg
│ ├── Compute_AmazonEC2ContainerService.svg
│ ├── Compute_AmazonEC2_AMI.svg
│ ├── Compute_AmazonEC2_CloudWatch.svg
│ ├── Compute_AmazonEC2_DBonInstance.svg
│ ├── Compute_AmazonEC2_ElasticIP.svg
│ ├── Compute_AmazonEC2_Instance.svg
│ ├── Compute_AmazonEC2_Instances.svg
│ ├── Compute_AmazonEC2_OptimizedInstance.svg
│ ├── Compute_AmazonEC2_SpotFleet.svg
│ ├── Compute_AmazonEC2_SpotInstance.svg
│ ├── Compute_Elastic Beanstalk.svg
│ ├── Compute_ElasticBeanstalk_Application.svg
│ ├── Compute_ElasticBeanstalk_Deployment.svg
│ ├── Compute_ElasticLoadBalancing.svg
│ ├── Compute_Lambda.svg
│ ├── Database_AWSDatabaseMigrationService.svg
│ ├── Database_AmazonElastiCache_MemCached.svg
│ ├── Database_AmazonElasticCache.svg
│ ├── Database_AmazonElasticCache_Node.svg
│ ├── Database_AmazonElasticCache_Redis.svg
│ ├── Database_AmazonRDS.svg
│ ├── Database_AmazonRDS_DBInstance.svg
│ ├── Database_AmazonRDS_InstanceReadReplica.svg
│ ├── Database_AmazonRDS_InstanceStandby.svg
│ ├── Database_AmazonRDS_MSInstance-2.svg
│ ├── Database_AmazonRDS_MSSQLInstance.svg
│ ├── Database_AmazonRDS_MySQLDBInstance.svg
│ ├── Database_AmazonRDS_MySQLInstance-2.svg
│ ├── Database_AmazonRDS_OracleDBInstance-2.svg
│ ├── Database_AmazonRDS_OracleDBInstance.svg
│ ├── Database_AmazonRDS_PIOP.svg
│ ├── Database_AmazonRDS_PostgreSQLInstance.svg
│ ├── Database_AmazonRDS_SQLMaster.svg
│ ├── Database_AmazonRDS_SQLSlave.svg
│ ├── Database_AmazonRedShift.svg
│ ├── Database_AmazonRedShift_DW1DenseCompute.svg
│ ├── Database_AmazonRedShift_DW2DenseCompute.svg
│ ├── Database_AmazonRedShift_SolidStateDisks.svg
│ ├── Database_AmazonSimpleDB.svg
│ ├── Database_AmazonSimpleDB_Domain.svg
│ ├── Database_DynamoDB.svg
│ ├── Database_DynamoDB_Attribute.svg
│ ├── Database_DynamoDB_Attributes.svg
│ ├── Database_DynamoDB_GlobalSecondaryIndex.svg
│ ├── Database_DynamoDB_Item.svg
│ ├── Database_DynamoDB_Items.svg
│ ├── Database_DynamoDB_Table.svg
│ ├── DeploymentManagement_AWSCodeCommit.svg
│ ├── DeploymentManagement_CodeDeploy.svg
│ ├── DeploymentManagement_CodePipeline.svg
│ ├── InternetOfThings_AWS-IOT.svg
│ ├── InternetOfThings_GenericIOTThing.svg
│ ├── InternetOfThings_IOTAction.svg
│ ├── InternetOfThings_IOTActuator.svg
│ ├── InternetOfThings_IOTCertificate.svg
│ ├── InternetOfThings_IOTDesiredState.svg
│ ├── InternetOfThings_IOTHTTP2Protocol.svg
│ ├── InternetOfThings_IOTHTTPProtocol.svg
│ ├── InternetOfThings_IOTHardwareBoard.svg
│ ├── InternetOfThings_IOTMQTTProtocol.svg
│ ├── InternetOfThings_IOTPolicy.svg
│ ├── InternetOfThings_IOTReportedState.svg
│ ├── InternetOfThings_IOTRule.svg
│ ├── InternetOfThings_IOTSensor.svg
│ ├── InternetOfThings_IOTServo.svg
│ ├── InternetOfThings_IOTShadow.svg
│ ├── InternetOfThings_IOTSimulator.svg
│ ├── InternetOfThings_IOTThingBank.svg
│ ├── InternetOfThings_IOTThingBicycle.svg
│ ├── InternetOfThings_IOTThingCamera.svg
│ ├── InternetOfThings_IOTThingCar.svg
│ ├── InternetOfThings_IOTThingCart.svg
│ ├── InternetOfThings_IOTThingCoffeePot.svg
│ ├── InternetOfThings_IOTThingDoorLock.svg
│ ├── InternetOfThings_IOTThingFactory.svg
│ ├── InternetOfThings_IOTThingHouse.svg
│ ├── InternetOfThings_IOTThingLightbulb.svg
│ ├── InternetOfThings_IOTThingMedicalEmergency.svg
│ ├── InternetOfThings_IOTThingPoliceEmergency.svg
│ ├── InternetOfThings_IOTThingThermostat.svg
│ ├── InternetOfThings_IOTThingTravel.svg
│ ├── InternetOfThings_IOTThingUtility.svg
│ ├── InternetOfThings_IOTThingWindfarm.svg
│ ├── InternetOfThings_IOTTopic.svg
│ ├── ManagementTools_CloudFormation.svg
│ ├── ManagementTools_CloudFormation_Stack.svg
│ ├── ManagementTools_CloudFormation_Template.svg
│ ├── ManagementTools_CloudTrail.svg
│ ├── ManagementTools_CloudWatch.svg
│ ├── ManagementTools_CloudWatch_Alarm.svg
│ ├── ManagementTools_Config.svg
│ ├── ManagementTools_OpsWorks.svg
│ ├── ManagementTools_OpsWorks_Apps.svg
│ ├── ManagementTools_OpsWorks_Deployments.svg
│ ├── ManagementTools_OpsWorks_Instances.svg
│ ├── ManagementTools_OpsWorks_Layers.svg
│ ├── ManagementTools_OpsWorks_Monitoring.svg
│ ├── ManagementTools_OpsWorks_Permissions.svg
│ ├── ManagementTools_OpsWorks_Resources.svg
│ ├── ManagementTools_OpsWorks_Stack.svg
│ ├── ManagementTools_ServiceCatalog.svg
│ ├── MobileServices_AWSMobileHub.svg
│ ├── MobileServices_Cognito.svg
│ ├── MobileServices_DeviceFarm.svg
│ ├── MobileServices_MobileAnalytics.svg
│ ├── MobileServices_SNS.svg
│ ├── MobileServices_SNS_EmailNotification.svg
│ ├── MobileServices_SNS_HTTPNotification.svg
│ ├── MobileServices_SNS_Topic.svg
│ ├── Networking_AWSDirectConnect.svg
│ ├── Networking_AmazonVPC.svg
│ ├── Networking_AmazonVPC_CustomerGateway.svg
│ ├── Networking_AmazonVPC_InternetGateway.svg
│ ├── Networking_AmazonVPC_Peering.svg
│ ├── Networking_AmazonVPC_Router.svg
│ ├── Networking_AmazonVPC_VPNConnection.svg
│ ├── Networking_AmazonVPC_VPNGateway.svg
│ ├── Networking_Route53.svg
│ ├── Networking_Route53_HostedZone.svg
│ ├── Networking_Route53_Table.svg
│ ├── SecurityIdentity_CloudHSM.svg
│ ├── SecurityIdentity_DirectoryService.svg
│ ├── SecurityIdentity_IdentityAccessManagement.svg
│ ├── SecurityIdentity_IdentityAccessManagement_AWSSecurityTokenService.svg
│ ├── SecurityIdentity_IdentityAccessManagement_AWSSecurityTokenService2.svg
│ ├── SecurityIdentity_IdentityAccessManagement_AddOn.svg
│ ├── SecurityIdentity_IdentityAccessManagement_DataEncryptionKey.svg
│ ├── SecurityIdentity_IdentityAccessManagement_EncryptedData.svg
│ ├── SecurityIdentity_IdentityAccessManagement_LongTermSecurityCredential.svg
│ ├── SecurityIdentity_IdentityAccessManagement_MFAToken.svg
│ ├── SecurityIdentity_IdentityAccessManagement_Permissions.svg
│ ├── SecurityIdentity_IdentityAccessManagement_Role.svg
│ ├── SecurityIdentity_IdentityAccessManagement_TemporarySecurityCredential.svg
│ ├── SecurityIdentity_KeyManagementService.svg
│ ├── SecurityIdentity_ServiceCatalog.svg
│ ├── SecurityIdentity_TrustedAdvisor.svg
│ ├── SecurityIdentity_WebAppFirewall.svg
│ ├── StorageContentDelivery_AWSIMportExport.svg
│ ├── StorageContentDelivery_AmazonCloudFront.svg
│ ├── StorageContentDelivery_AmazonCloudFront_DownloadDistribution.svg
│ ├── StorageContentDelivery_AmazonCloudFront_EdgeLocation.svg
│ ├── StorageContentDelivery_AmazonCloudFront_StreamingDistribution.svg
│ ├── StorageContentDelivery_AmazonElasticBlockStore.svg
│ ├── StorageContentDelivery_AmazonGlacier.svg
│ ├── StorageContentDelivery_AmazonGlacier_Archive.svg
│ ├── StorageContentDelivery_AmazonGlacier_Vault.svg
│ ├── StorageContentDelivery_AmazonS3.svg
│ ├── StorageContentDelivery_AmazonS3_Bucket.svg
│ ├── StorageContentDelivery_AmazonS3_BucketwithObjects.svg
│ ├── StorageContentDelivery_AmazonS3_Objects.svg
│ ├── StorageContentDelivery_AmazonStorageGateway.svg
│ ├── StorageContentDelivery_AmazonStorageGateway_CachedVolume.svg
│ ├── StorageContentDelivery_AmazonStorageGateway_Non-Cached Volumn.svg
│ ├── StorageContentDelivery_AmazonStorageGateway_VirtualTapeLibrary.svg
│ ├── StorageContentDelivery_EFS.svg
│ ├── StorageContentDelivery_Snapshot.svg
│ ├── StorageContentDelivery_Snowball.svg
│ ├── StorageContentDelivery_Volume.svg
│ ├── bellerophon.hqx
│ ├── bellerophon.icns
│ ├── bellerophon.ico
│ └── bellerophon.svg
├── index.js
├── logger.js
├── main
│ ├── index.css
│ ├── index.html
│ ├── mainView.js
│ ├── panelcomponent.js
│ ├── resourcecomponent.js
│ └── sidebarcomponent.js
├── package.json
├── resource.js
├── resources
│ ├── autoscaling.js
│ ├── cloudformation.js
│ ├── cloudfront.js
│ ├── cloudtrail.js
│ ├── cloudwatch.js
│ ├── ec2.js
│ ├── elasticloadbalancing.js
│ ├── iam.js
│ ├── route53.js
│ ├── s3.js
│ ├── sns.js
│ ├── sqs.js
│ └── util.js
├── template.js
└── template
│ ├── index.css
│ ├── index.html
│ └── templateView.js
└── test
├── index.js
├── panelcomponent.js
├── resource.js
├── resource.js.old
├── resourcecomponent.js
├── sidebarcomponent.js
├── template.js
├── templateView.js
└── uiView.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = tab
5 | end_of_line = lf
6 | charset = utf-8
7 | trim_trailing_whitespace = true
8 | insert_final_newline = true
9 |
10 | [{package.json,*.yml}]
11 | indent_style = space
12 | indent_size = 2
13 |
14 | [*.md]
15 | trim_trailing_whitespace = false
16 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | /dist
3 |
--------------------------------------------------------------------------------
/.idea/libraries/bellerophon_node_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/watcherTasks.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bellerophon",
3 | "description": "My badass app",
4 | "main": "ui.js",
5 | "authors": [
6 | "[object Object]"
7 | ],
8 | "license": "Apache 2.0",
9 | "keywords": [
10 | "electron-app",
11 | "electron"
12 | ],
13 | "homepage": "https://github.com/arminhammer/bellerophon",
14 | "moduleType": [
15 | "amd",
16 | "node"
17 | ],
18 | "private": true,
19 | "ignore": [
20 | "**/.*",
21 | "node_modules",
22 | "bower_components",
23 | "test",
24 | "tests"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bellerophon",
3 | "productName": "Bellerophon",
4 | "version": "0.2.2",
5 | "description": "AWS CloudFormation generator based off of existing account resources.",
6 | "license": "MIT",
7 | "repository": "arminhammer/bellerophon",
8 | "author": {
9 | "name": "arminhammer",
10 | "email": "arminhammer@gmail.com",
11 | "url": "github.com/arminhammer/bellerophon"
12 | },
13 | "electronVersion": "0.36.0",
14 | "scripts": {
15 | "test": "xo",
16 | "start": "electron --debug src",
17 | "build": "electron-packager . $npm_package_productName --out=dist --ignore='^/dist$' --prune --asar --all --version=$npm_package_electronVersion"
18 | },
19 | "files": [
20 | "index.js"
21 | ],
22 | "keywords": [
23 | "bellerophon-app",
24 | "bellerophon"
25 | ],
26 | "devDependencies": {
27 | "electron-packager": "^5.2.1",
28 | "electron-prebuilt": "0.36.9",
29 | "eslint-config-devenv": "^1.1.0",
30 | "gulp": "^3.9.1",
31 | "gulp-electron": "0.0.10",
32 | "gulp-eslint": "^1.0.0",
33 | "gulp-exclude-gitignore": "^1.0.0",
34 | "gulp-istanbul": "^0.10.3",
35 | "gulp-mocha": "^2.0.0",
36 | "gulp-nsp": "^2.3.0",
37 | "gulp-plumber": "^1.0.0",
38 | "rewire": "^2.5.1",
39 | "xo": "^0.12.1"
40 | },
41 | "xo": {
42 | "esnext": true,
43 | "envs": [
44 | "node",
45 | "browser"
46 | ]
47 | },
48 | "dependencies": {
49 | "node-notifier": "^4.4.0"
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/fonts/poiretone.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arminhammer/bellerophon/399b156d8fed36a860d65f94a91195838b37a459/src/fonts/poiretone.woff2
--------------------------------------------------------------------------------
/src/icons/AWS-EC2-Container-Registry.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 |
--------------------------------------------------------------------------------
/src/icons/AmazonWorkDocs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
30 |
--------------------------------------------------------------------------------
/src/icons/AmazonWorkMail.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/src/icons/AmazonWorkSpaces.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonEMR_Engine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
26 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonEMR_MapRM3Engine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
29 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonEMR_MapRM5Engine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonEMR_MapRM7Engine.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonElasticsearch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonMachineLearning.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/src/icons/Analytics_AmazonQuickSight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/icons/Analytics_DataPipeline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/src/icons/Analytics_Kinesis.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
29 |
--------------------------------------------------------------------------------
/src/icons/Analytics_Kinesis_EnabledApp.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/icons/Analytics_Kinesis_Firehose.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
30 |
--------------------------------------------------------------------------------
/src/icons/Analytics_Kinesis_Streams.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_APIGateway.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonCloudSearch_SDFmetadata.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
27 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonSES.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
21 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonSQS_Message.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
31 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonSQS_Queue.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
24 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonSWF.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
23 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AmazonSWF_Worker.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
28 |
--------------------------------------------------------------------------------
/src/icons/ApplicationServices_AppStream.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
26 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2ContainerService.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_AMI.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
47 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_CloudWatch.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_ElasticIP.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_Instance.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_OptimizedInstance.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_SpotFleet.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
57 |
--------------------------------------------------------------------------------
/src/icons/Compute_AmazonEC2_SpotInstance.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
51 |
--------------------------------------------------------------------------------
/src/icons/Compute_Elastic Beanstalk.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/icons/Compute_ElasticBeanstalk_Application.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
47 |
--------------------------------------------------------------------------------
/src/icons/Compute_ElasticLoadBalancing.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
38 |
--------------------------------------------------------------------------------
/src/icons/Compute_Lambda.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
27 |
--------------------------------------------------------------------------------
/src/icons/Database_AWSDatabaseMigrationService.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonElastiCache_MemCached.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonElasticCache.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonElasticCache_Redis.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
46 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRDS.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRDS_MSInstance-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRDS_MySQLInstance-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRDS_OracleDBInstance-2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRDS_PIOP.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonRedShift.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
48 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonSimpleDB.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/src/icons/Database_AmazonSimpleDB_Domain.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
--------------------------------------------------------------------------------
/src/icons/DeploymentManagement_CodeDeploy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
23 |
--------------------------------------------------------------------------------
/src/icons/DeploymentManagement_CodePipeline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
26 |
--------------------------------------------------------------------------------
/src/icons/InternetOfThings_AWS-IOT.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
38 |
--------------------------------------------------------------------------------
/src/icons/InternetOfThings_IOTAction.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/src/icons/InternetOfThings_IOTHTTP2Protocol.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/InternetOfThings_IOTHTTPProtocol.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/InternetOfThings_IOTMQTTProtocol.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
36 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_CloudFormation_Stack.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
79 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_CloudFormation_Template.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
29 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_CloudTrail.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
35 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_CloudWatch_Alarm.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
67 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_Config.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Apps.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Deployments.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Instances.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Layers.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Monitoring.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Permissions.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Resources.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_OpsWorks_Stack.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/icons/ManagementTools_ServiceCatalog.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/src/icons/MobileServices_Cognito.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
26 |
--------------------------------------------------------------------------------
/src/icons/MobileServices_DeviceFarm.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
--------------------------------------------------------------------------------
/src/icons/MobileServices_MobileAnalytics.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
29 |
--------------------------------------------------------------------------------
/src/icons/MobileServices_SNS.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
--------------------------------------------------------------------------------
/src/icons/MobileServices_SNS_Topic.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/icons/Networking_AWSDirectConnect.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/icons/Networking_AmazonVPC.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/icons/Networking_AmazonVPC_InternetGateway.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/src/icons/Networking_AmazonVPC_VPNGateway.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/src/icons/Networking_Route53.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_CloudHSM.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_DirectoryService.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
32 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_AWSSecurityTokenService.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
45 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_DataEncryptionKey.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_EncryptedData.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_LongTermSecurityCredential.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
46 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_MFAToken.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_IdentityAccessManagement_Permissions.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
38 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_KeyManagementService.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_ServiceCatalog.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_TrustedAdvisor.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
27 |
--------------------------------------------------------------------------------
/src/icons/SecurityIdentity_WebAppFirewall.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
28 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonCloudFront_DownloadDistribution.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonCloudFront_EdgeLocation.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
48 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonCloudFront_StreamingDistribution.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
39 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonElasticBlockStore.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonGlacier_Archive.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
33 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonGlacier_Vault.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
44 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonS3_Objects.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
31 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonStorageGateway.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
19 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonStorageGateway_CachedVolume.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
37 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_AmazonStorageGateway_Non-Cached Volumn.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
25 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_EFS.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
24 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_Snowball.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
--------------------------------------------------------------------------------
/src/icons/StorageContentDelivery_Volume.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/src/icons/bellerophon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arminhammer/bellerophon/399b156d8fed36a860d65f94a91195838b37a459/src/icons/bellerophon.icns
--------------------------------------------------------------------------------
/src/icons/bellerophon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arminhammer/bellerophon/399b156d8fed36a860d65f94a91195838b37a459/src/icons/bellerophon.ico
--------------------------------------------------------------------------------
/src/logger.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 1/6/16.
3 | */
4 | 'use strict';
5 | var winston = require('winston');
6 | var os = require('os');
7 |
8 | var Logger = function() {
9 | var self = this;
10 | if(process.env['BELLEROPHON_LOG'] === 'debug') {
11 | self.logger = new winston.Logger({
12 | level: 'info',
13 | transports: [
14 | new (winston.transports.Console)(),
15 | new (winston.transports.File)({filename: os.homedir() + '/.bellerophon.log'})
16 | ]
17 | });
18 | }
19 |
20 | self.log = function(msg, level, from) {
21 | if(!level) {
22 | level = 'info';
23 | }
24 | if(!from) {
25 | from = 'SERVER:'
26 | }
27 | if(process.env['BELLEROPHON_LOG'] === 'debug') {
28 | self.logger.log(level, from, msg);
29 | }
30 | };
31 | };
32 |
33 | module.exports = Logger;
34 |
--------------------------------------------------------------------------------
/src/main/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bellerophon
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
21 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/main/mainView.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 11/18/15.
3 | */
4 |
5 | 'use strict';
6 |
7 | var m = require('mithril');
8 |
9 | var SidebarComponent = require('./sidebarcomponent');
10 | var ResourceComponent = require('./resourcecomponent');
11 |
12 | var MainView = {
13 |
14 | controller: function() {
15 | var self = this;
16 | self.resourceName = m.prop('AutoScaling');
17 | self.sideList = m.prop();
18 | self.resources = m.prop();
19 | self.ipcRenderer = require('electron').ipcRenderer;
20 | self.log = function(msg, level) {
21 | if(!level) {
22 | level = 'info';
23 | }
24 | self.ipcRenderer.send('send-log', { from: 'UI:', level: level, msg: msg });
25 | };
26 | self.ipcRenderer.on('update-resources', function(event, res) {
27 | m.startComputation();
28 | self.log('Updating resources');
29 | self.resources(res.resources);
30 | self.sideList(res.resources);
31 | self.resourceName(res.primary);
32 | self.log('Updated resources');
33 | m.endComputation();
34 | });
35 | self.ipcRenderer.send('update-resource', { primary: self.resourceName() });
36 | },
37 | view: function(controller) {
38 | return [
39 | m('.container-fluid', [
40 | m('.row.MainContent', [
41 | m.component(SidebarComponent, { resources: controller.resources, resourceName: controller.resourceName, sideList: controller.sideList }),
42 | m.component(ResourceComponent, { resources: controller.resources, log: controller.log, resourceName: controller.resourceName })
43 | ])
44 | ])
45 | ]}
46 | };
47 |
48 | m.mount(document.body,MainView);
49 |
50 | module.exports = MainView;
51 |
--------------------------------------------------------------------------------
/src/main/sidebarcomponent.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var m = require('mithril');
4 | var _ = require('lodash');
5 |
6 | var SideBarComponent = {
7 | controller: function(options) {
8 | this.resources = options.resources;
9 | this.sideList = options.sideList;
10 | this.ipcRenderer = require('electron').ipcRenderer;
11 | this.changeResource = function(key) {
12 | this.resources(null);
13 | this.ipcRenderer.send('update-resource', { primary: key })
14 | };
15 | this.resourceName = options.resourceName;
16 | },
17 | view: function(controller) {
18 | return m('nav.col-xs-3.bs-docs-sidebar .col-md-2 .col-lg-2', [
19 | m('ul.nav.nav-stacked.fixed[id="sidebar"]', [
20 | m('li', [
21 | m('#logoHeader', [
22 | m('img', { id: 'bellerophonLogo', src: '../icons/bellerophon.svg', height: 50 }),
23 | m('span', 'Bellerophon')
24 | ])
25 | ]),
26 | _.map(controller.sideList(), function(resource, key) {
27 | return m('li', [
28 | m('span', {
29 | onclick: function () {
30 | controller.changeResource(key)
31 | }
32 | }, [
33 | m('a[href="#' + key + '"]', key)
34 | ]),
35 | m('ul.nav.nav-stacked', [
36 | _.map(controller.sideList()[key].types, function (subResource, subKey) {
37 | if(key === controller.resourceName()) {
38 |
39 | if (Object.keys(controller.sideList()[key].types[subKey]).length > 0) {
40 | return m('li', [m('a[href="#' + key + subKey + '"]', subKey)])
41 | }
42 | }
43 | })
44 | ])
45 | ])
46 | })
47 | ])
48 | ])
49 | }
50 | };
51 |
52 | module.exports = SideBarComponent;
53 |
--------------------------------------------------------------------------------
/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bellerophon",
3 | "version": "0.2.2",
4 | "main": "index.js",
5 | "dependencies": {
6 | "aws-sdk": "^2.2.33",
7 | "bluebird": "^3.2.2",
8 | "bootstrap": "^3.3.5",
9 | "bootswatch": "^3.3.6",
10 | "codemirror": "^5.11.0",
11 | "electron-debug": "^0.5.0",
12 | "jquery": "^2.1.4",
13 | "jsonlint": "^1.6.2",
14 | "lodash": "^4.3.0",
15 | "mithril": "0.2.0",
16 | "node-notifier": "^4.4.0",
17 | "spin.js": "^2.3.2",
18 | "winston": "^2.1.1"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/resources/cloudformation.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var CloudFormation = function(AWS) {
6 |
7 | var cloudformation = P.promisifyAll(new AWS.CloudFormation());
8 |
9 | return {
10 | //Authentication
11 | //CustomResource
12 | //Init
13 | //Interface
14 | Stack: {
15 | call: function() { return cloudformation.describeStacksAsync({}) },
16 | resBlock: 'Stacks',
17 | rName: 'StackName',
18 | construct: function (name, body) {
19 | Util.baseConstruct(this, name, body);
20 | this.block = {
21 | 'Type' : 'AWS::CloudFormation::Stack',
22 | 'Properties' : {
23 | 'NotificationARNs' : [],
24 | 'Parameters' : {},
25 | 'TemplateURL' : 'String',
26 | 'TimeoutInMinutes' : 'String'
27 | }
28 | }
29 | }
30 | }
31 | //WaitCondition
32 | //WaitConditionHandle
33 | };
34 | };
35 |
36 | module.exports = CloudFormation;
37 |
--------------------------------------------------------------------------------
/src/resources/cloudfront.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var CloudFront = function(AWS) {
6 |
7 | var cloudfront = P.promisifyAll(new AWS.CloudFront());
8 |
9 | return {
10 | Distribution: {
11 | call: function() {
12 | return cloudfront
13 | .listDistributionsAsync({})
14 | },
15 | resBlock: 'Items',
16 | rName: 'Id',
17 | construct: function (name, body) {
18 | Util.baseConstruct(this, name, body);
19 | this.block = {
20 | 'Type': 'AWS::CloudFront::Distribution',
21 | 'Properties' : {
22 | 'DistributionConfig' : {
23 | 'Aliases' : [],
24 | 'CacheBehaviors' : [],
25 | 'Comment' : 'String',
26 | 'CustomErrorResponses' : [],
27 | 'DefaultCacheBehavior' : 'String',
28 | 'DefaultRootObject' : 'String',
29 | 'Enabled' : 'Boolean',
30 | 'Logging' : 'String',
31 | 'Origins' : [],
32 | 'PriceClass' : 'String',
33 | 'Restrictions' : 'Restriction',
34 | 'ViewerCertificate' : 'ViewerCertificate',
35 | 'WebACLId' : 'String'
36 | }
37 | }
38 | }
39 | }
40 | }
41 | };
42 | };
43 |
44 | module.exports = CloudFront;
45 |
--------------------------------------------------------------------------------
/src/resources/cloudtrail.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var CloudTrail = function(AWS) {
6 |
7 | var cloudtrail = P.promisifyAll(new AWS.CloudTrail());
8 |
9 | return {
10 | /*: {
11 | call: function() { return .Async({}) },
12 | resBlock: '',
13 | rName: '',
14 | construct: function (name, body) {
15 | baseConstruct(this, name, body);
16 | this.block =
17 | }
18 | }*/
19 | Trail: {
20 | call: function() { return cloudtrail.describeTrailsAsync({}) },
21 | resBlock: 'trailList',
22 | rName: 'Name',
23 | construct: function (name, body) {
24 | Util.baseConstruct(this, name, body);
25 | this.block = {
26 | 'Type' : 'AWS::CloudTrail::Trail',
27 | 'Properties' : {
28 | 'CloudWatchLogsLogGroupArn' : 'String',
29 | 'CloudWatchLogsRoleArn' : 'String',
30 | 'EnableLogFileValidation' : 'Boolean',
31 | 'IncludeGlobalServiceEvents' : 'Boolean',
32 | 'IsLogging' : 'Boolean',
33 | 'KMSKeyId' : 'String',
34 | 'S3BucketName' : 'String',
35 | 'S3KeyPrefix' : 'String',
36 | 'SnsTopicName' : 'String',
37 | 'Tags' : []
38 | }
39 | }
40 | }
41 | }
42 | };
43 | };
44 |
45 | module.exports = CloudTrail;
46 |
--------------------------------------------------------------------------------
/src/resources/cloudwatch.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var CloudWatch = function(AWS) {
6 |
7 | var cloudwatch = P.promisifyAll(new AWS.CloudWatch());
8 |
9 | return {
10 | Alarm: {
11 | call: function() { return cloudwatch.describeAlarmsAsync({}) },
12 | resBlock: 'MetricAlarms',
13 | rName: 'AlarmName',
14 | construct: function (name, body) {
15 | Util.baseConstruct(this, name, body);
16 | this.block = {
17 | 'Type' : 'AWS::CloudWatch::Alarm',
18 | 'Properties' : {
19 | 'ActionsEnabled' : 'Boolean',
20 | 'AlarmActions' : [],
21 | 'AlarmDescription' : 'String',
22 | 'AlarmName' : 'String',
23 | 'ComparisonOperator' : 'String',
24 | 'Dimensions' : [],
25 | 'EvaluationPeriods' : 'String',
26 | 'InsufficientDataActions' : [],
27 | 'MetricName' : 'String',
28 | 'Namespace' : 'String',
29 | 'OKActions' : [],
30 | 'Period' : 'String',
31 | 'Statistic' : 'String',
32 | 'Threshold' : 'String',
33 | 'Unit' : 'String'
34 | }
35 | }
36 | }
37 | }
38 | };
39 | };
40 |
41 | module.exports = CloudWatch;
42 |
--------------------------------------------------------------------------------
/src/resources/elasticloadbalancing.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var ElasticLoadBalancing = function(AWS) {
6 |
7 | var elb = P.promisifyAll(new AWS.ELB());
8 |
9 | return {
10 | LoadBalancer: {
11 | call: function() { return elb.describeLoadBalancersAsync({}) },
12 | resBlock: 'LoadBalancerDescriptions',
13 | rName: 'LoadBalancerName',
14 | construct: function (name, body) {
15 | Util.baseConstruct(this, name, body);
16 | this.block = {
17 | 'Type': 'AWS::ElasticLoadBalancing::LoadBalancer',
18 | 'Properties': {
19 | 'AccessLoggingPolicy' : 'AccessLoggingPolicy',
20 | 'AppCookieStickinessPolicy' : [],
21 | 'AvailabilityZones' : [],
22 | 'ConnectionDrainingPolicy' : 'ConnectionDrainingPolicy',
23 | 'ConnectionSettings' : 'ConnectionSettings',
24 | 'CrossZone' : 'Boolean',
25 | 'HealthCheck' : 'HealthCheck',
26 | 'Instances' : [],
27 | 'LBCookieStickinessPolicy' : [],
28 | 'LoadBalancerName' : 'String',
29 | 'Listeners' : [],
30 | 'Policies' : [],
31 | 'Scheme' : 'String',
32 | 'SecurityGroups' : [],
33 | 'Subnets' : [],
34 | 'Tags' : []
35 | }
36 | }
37 | }
38 | }
39 | };
40 | };
41 |
42 | module.exports = ElasticLoadBalancing;
43 |
--------------------------------------------------------------------------------
/src/resources/route53.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var Route53 = function(AWS) {
6 |
7 | var route53 = P.promisifyAll(new AWS.Route53());
8 |
9 | return {
10 | HealthCheck: {
11 | call: function() { return route53.listHealthChecksAsync({}) },
12 | resBlock: 'HealthChecks',
13 | rName: 'Id',
14 | construct: function (name, body) {
15 | Util.baseConstruct(this, name, body);
16 | this.block = {
17 | 'Type' : 'AWS::Route53::HealthCheck',
18 | 'Properties' : {
19 | 'HealthCheckConfig' : {},
20 | 'HealthCheckTags' : []
21 | }
22 | }
23 | }
24 | },
25 | HostedZone: {
26 | call: function() { return route53.listHostedZonesAsync({}) },
27 | resBlock: 'HostedZones',
28 | rName: 'Id',
29 | construct: function (name, body) {
30 | Util.baseConstruct(this, name, body);
31 | this.block = {
32 | 'Type' : 'AWS::Route53::HostedZone',
33 | 'Properties' : {
34 | 'HostedZoneConfig' : {},
35 | 'HostedZoneTags' : [],
36 | 'Name' : 'String',
37 | 'VPCs' : []
38 | }
39 | }
40 | }
41 | }
42 | /*RecordSet: {
43 | call: function() { return route53.listResourceRecordSetsAsync({}) },
44 | resBlock: '',
45 | rName: '',
46 | construct: function (name, body) {
47 | Util.baseConstruct(this, name, body);
48 | this.block =
49 | }
50 | },
51 | RecordSetGroup: {
52 | call: function() { return .Async({}) },
53 | resBlock: '',
54 | rName: '',
55 | construct: function (name, body) {
56 | Util.baseConstruct(this, name, body);
57 | this.block =
58 | }
59 | }*/
60 | };
61 | };
62 |
63 | module.exports = Route53;
64 |
--------------------------------------------------------------------------------
/src/resources/sns.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var P = require('bluebird');
3 | var Util = require('./util');
4 |
5 | var SNS = function(AWS) {
6 |
7 | var sns = P.promisifyAll(new AWS.SNS());
8 |
9 | return {
10 | Topic: {
11 | call: function() { return sns.listTopicsAsync({}) },
12 | resBlock: 'Topics',
13 | rName: 'TopicArn',
14 | construct: function (name, body) {
15 | Util.baseConstruct(this, name, body);
16 | this.block = {
17 | 'Type' : 'AWS::SNS::Topic',
18 | 'Properties' : {
19 | 'DisplayName' : 'String',
20 | 'Subscription' : [],
21 | 'TopicName' : 'String'
22 | }
23 | }
24 | }
25 | }
26 | //TopicPolicy
27 | };
28 | };
29 |
30 | module.exports = SNS;
31 |
--------------------------------------------------------------------------------
/src/resources/sqs.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | var _ = require('lodash');
3 | var P = require('bluebird');
4 |
5 | var Util = require('./util');
6 |
7 | var SQS = function(AWS) {
8 |
9 | var sqs = P.promisifyAll(new AWS.SQS());
10 |
11 | return {
12 | Queue: {
13 | call: function() { return sqs
14 | .listQueuesAsync({})
15 | .then(function(data) {
16 | var finalQueueList = { QueueUrls: [] };
17 | _.each(data.QueueUrls, function(queue) {
18 | finalQueueList.QueueUrls.push({ QueueName: queue });
19 | });
20 | return finalQueueList;
21 | })},
22 | resBlock: 'QueueUrls',
23 | rName: 'QueueName',
24 | construct: function (name, body) {
25 | Util.baseConstruct(this, name, body);
26 | this.block = {
27 | 'Type': 'AWS::SQS::Queue',
28 | 'Properties': {
29 | 'DelaySeconds': 'Integer',
30 | 'MaximumMessageSize': 'Integer',
31 | 'MessageRetentionPeriod': 'Integer',
32 | 'QueueName': 'String',
33 | 'ReceiveMessageWaitTimeSeconds': 'Integer',
34 | 'RedrivePolicy': 'RedrivePolicy',
35 | 'VisibilityTimeout': 'Integer'
36 | }
37 | }
38 | }
39 | }
40 | //QueuePolicy
41 | };
42 | };
43 |
44 | module.exports = SQS;
45 |
--------------------------------------------------------------------------------
/src/resources/util.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function buildName(name) {
4 | name = name.replace( /\W/g , '');
5 | return name + 'Resource';
6 | }
7 |
8 | var Util = {
9 |
10 | baseConstruct: function(obj, name, body) {
11 | obj.inTemplate = false;
12 | obj.templateParams = {};
13 | obj.id = name;
14 | obj.name = buildName(name);
15 | obj.body = body;
16 | }
17 |
18 | };
19 |
20 | module.exports = Util;
21 |
--------------------------------------------------------------------------------
/src/template.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 11/24/15.
3 | */
4 |
5 | 'use strict';
6 |
7 | var _ = require('lodash');
8 |
9 | var Template = function() {
10 |
11 | var self = this;
12 |
13 | function recursiveReplace(object, newPattern, oldPattern) {
14 | _.forIn(object, function (val, key) {
15 | if(_.isEqual(val, oldPattern)) {
16 | object[key] = newPattern
17 | } else if (_.isString(val) && _.isEqual(val.replace(/\W/g, ''), oldPattern)) {
18 | object[key] = newPattern;
19 | }
20 | else if (_.isArray(val)) {
21 | val.forEach(function(el) {
22 | if (_.isObject(el)) {
23 | recursiveReplace(el, newPattern, oldPattern);
24 | }
25 | });
26 | } else if (_.isObject(object[key])) {
27 | recursiveReplace(object[key], newPattern, oldPattern);
28 | }
29 | });
30 | }
31 |
32 | function populateBlock(block, body) {
33 | block.Properties = _.reduce(block.Properties, function(result, n, key) {
34 | if(body[key]) {
35 | result[key] = body[key];
36 | }
37 | return result;
38 | }, {});
39 | return block;
40 | }
41 |
42 | self.addResource = function(resource) {
43 | recursiveReplace(self.body.Resources, { 'Ref': resource.name }, resource.id);
44 | var newResource = populateBlock(resource.block, resource.body);
45 | _.each(self.body.Resources, function(val, key) {
46 | recursiveReplace(newResource, { 'Ref': key }, key.replace('Resource',''))
47 | });
48 | self.body.Resources[resource.name] = newResource;
49 | };
50 |
51 | self.removeResource = function(resource) {
52 | recursiveReplace(self.body.Resources, resource.id, { 'Ref': resource.name });
53 | delete self.body.Resources[resource.name];
54 | };
55 |
56 | self.addParam = function(resource, pKey) {
57 | if(self.body.Resources[resource.name]) {
58 | if(self.body.Resources[resource.name].Properties[pKey]) {
59 | var oldVal = self.body.Resources[resource.name].Properties[pKey];
60 | var paramName = resource.name + pKey + 'Param';
61 | self.body.Resources[resource.name].Properties[pKey] = { 'Ref' : paramName };
62 | self.body.Parameters[paramName] = {
63 | 'Type' : 'String',
64 | 'Default' : oldVal
65 | }
66 | }
67 | }
68 | };
69 |
70 | self.removeParam = function(resource, pKey) {
71 | if(self.body.Resources[resource.name]) {
72 | if(self.body.Resources[resource.name].Properties[pKey]) {
73 | var paramName = resource.name + pKey + 'Param';
74 | self.body.Resources[resource.name].Properties[pKey] = self.body.Parameters[paramName].Default;
75 | delete self.body.Parameters[paramName];
76 | }
77 | }
78 | };
79 |
80 | self.body = {
81 | 'AWSTemplateFormatVersion' : '2010-09-09',
82 | 'Parameters' : {},
83 | 'Resources' : {}
84 | };
85 |
86 | };
87 |
88 | module.exports = Template;
89 |
--------------------------------------------------------------------------------
/src/template/index.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | padding: 0px;
3 | margin: 0px;
4 | font-size: 1.1em;
5 | }
6 |
--------------------------------------------------------------------------------
/src/template/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bellerophon
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/template/templateView.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 11/18/15.
3 | */
4 | 'use strict';
5 |
6 | var m = require('mithril');
7 |
8 | var ipcRenderer = require('electron').ipcRenderer;
9 |
10 | var log = function(msg, level) {
11 | if(!level) {
12 | level = 'info';
13 | }
14 | ipcRenderer.send('send-log', { from: 'TEMPLATE:', level: level, msg: msg });
15 | };
16 |
17 | log('Initializing template');
18 |
19 | var template = m.prop({});
20 |
21 | ipcRenderer.send('get-template');
22 |
23 | ipcRenderer.on('update-template', function(event, res) {
24 | m.startComputation();
25 | log('Updating template!');
26 | template(res);
27 | m.endComputation();
28 | });
29 |
30 | function resizeEditor(editor) {
31 | editor.setSize(null, window.innerHeight);
32 | }
33 |
34 | var templateView = {
35 |
36 | controller: function() {
37 |
38 | this.template = template;
39 |
40 | var editor = null;
41 |
42 | this.drawEditor = function (element, isInitialized) {
43 |
44 | if (isInitialized) {
45 | if(editor) {
46 | editor.setValue(JSON.stringify(template(), undefined, 2));
47 | editor.refresh();
48 | }
49 | return;
50 | }
51 |
52 | editor = CodeMirror(element, {
53 | value: JSON.stringify(template(), undefined, 2),
54 | lineNumbers: true,
55 | mode: 'application/json',
56 | gutters: ['CodeMirror-lint-markers'],
57 | lint: true,
58 | styleActiveLine: true,
59 | autoCloseBrackets: true,
60 | matchBrackets: true,
61 | theme: 'zenburn'
62 | });
63 |
64 | log(editor.getValue());
65 |
66 | resizeEditor(editor);
67 |
68 | $(window).resize(function() {
69 | resizeEditor(editor);
70 | });
71 | }
72 | },
73 | view: function(controller) {
74 | return [
75 | m('#templateView', { config: controller.drawEditor })
76 | ]
77 | }
78 | };
79 |
80 | m.mount(document.body, templateView);
81 |
--------------------------------------------------------------------------------
/test/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var assert = require('assert');
4 |
5 | describe('Belleraphon', function () {
6 | it('should have unit test!', function () {
7 | //assert(false, 'we expected this package author to add actual unit tests.');
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/test/panelcomponent.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 1/5/16.
3 | */
4 |
5 | 'use strict';
6 |
7 | var assert = require('assert');
8 | var rewire = require("rewire");
9 |
10 | var PanelComponent = rewire('../src/main/panelcomponent');
11 |
12 | var ipcRendererMock = {
13 | send: function (msg, content) {}
14 | };
15 |
16 | //PanelComponent.__set__('ipcRenderer', ipcRendererMock);
17 |
18 | describe('PanelComponent', function () {
19 |
20 | it('should have a controller and view', function () {
21 | assert(true, PanelComponent.controller);
22 | assert(true, PanelComponent.view);
23 | });
24 |
25 | it('controller should have accept resources object', function () {
26 | var options = {
27 | resource: {},
28 | log: 'log',
29 | key: 'key',
30 | subKey: 'subKey'
31 | };
32 | var controller = new PanelComponent.controller(options);
33 | assert.equal(options.resource, controller.resource);
34 | assert.equal(options.log, controller.log);
35 | assert.equal(options.key, controller.key);
36 | assert.equal(options.subKey, controller.subKey);
37 | });
38 |
39 | });
40 |
--------------------------------------------------------------------------------
/test/resourcecomponent.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 1/5/16.
3 | */
4 |
5 | 'use strict';
6 |
7 | var assert = require('assert');
8 | var rewire = require("rewire");
9 | var _ = require('lodash');
10 |
11 | var ResourceComponent = require('../src/main/resourcecomponent');
12 |
13 | describe('ResourceComponent', function () {
14 |
15 | it('should have a controller and view', function () {
16 | assert(true, ResourceComponent.controller);
17 | assert(true, ResourceComponent.view);
18 | });
19 |
20 | it('controller should accept resources object', function () {
21 | var options = { resources: {} };
22 | var controller = new ResourceComponent.controller(options);
23 | assert(true, _.isEmpty(controller.resources));
24 | });
25 |
26 | });
27 |
--------------------------------------------------------------------------------
/test/sidebarcomponent.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 1/5/16.
3 | */
4 |
5 | 'use strict';
6 |
7 | var assert = require('assert');
8 | var rewire = require("rewire");
9 | var _ = require('lodash');
10 |
11 | var SideBarComponent = rewire('../src/main/sidebarcomponent');
12 |
13 | var ipcRendererMock = {
14 | send: function (msg, content) {}
15 | };
16 |
17 | //SideBarComponent.__set__('ipcRenderer', ipcRendererMock);
18 |
19 | describe('SideBarComponent', function () {
20 |
21 | it('should have a controller and view', function () {
22 | assert(true, SideBarComponent.controller);
23 | assert(true, SideBarComponent.view);
24 | });
25 |
26 | it('controller should have accept resources object', function () {
27 | var options = { resources: {} };
28 | var controller = new SideBarComponent.controller(options);
29 | assert(true, _.isEmpty(controller.resources));
30 | });
31 |
32 | });
33 |
--------------------------------------------------------------------------------
/test/templateView.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 12/6/15.
3 | */
4 |
--------------------------------------------------------------------------------
/test/uiView.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by arminhammer on 12/6/15.
3 | */
4 |
5 | 'use strict';
6 |
7 | var assert = require('assert');
8 | var rewire = require("rewire");
9 | //var UiView = rewire('../src/ui/uiView');
10 |
11 | var ipcRendererMock = {
12 | send: function (msg, content) {}
13 | };
14 |
15 | //UiView.__set__('ipcRenderer', ipcRendererMock);
16 | //UiView.__set__('document', { body: {}});
17 |
18 | //var Resource = require('../src/resource');
19 |
20 | //describe('uiView', function () {
21 |
22 | //var mockUiView = new UiView();
23 |
24 | //it('should have a controller and a view', function () {
25 | //assert(true, UiView.controller);
26 | //});
27 | //});
28 |
--------------------------------------------------------------------------------