Skip to content

A UI project for the Cloud Foundry incubator app-autoscaler

License

Notifications You must be signed in to change notification settings

adarshasp87/app-autoscaler-ui

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App-AutoScaler-UI

The UI project for App-AutoScaler. Written with Golang/ReactJS/Redux/ES6/Webpack stack, tested by ginkgo/jest/enzyme.

The App-AutoScaler-UI provides user interface to manage the app-autoscaler service and app:

  • ServiceView page: bound apps of the service instance
  • AppView Page:
    • Policy Page: view/edit application policy
    • Metrics Page: metrics dashboard
    • History Page: scaling history

Development

System requirements

Setup

  1. Clone the project
$ git clone https://github.com/cloudfoundry-incubator/app-autoscaler-ui.git
  1. Build front-end resources, the target resources will be saved in the folder app-autoscaler-ui/view/dev/
$ cd app-autoscaler-ui/view
$ npm install
$ npm run build
  1. Build back-end resources, the target executable file will be saved in the file app-autoscaler-ui/scalerui
$ cd app-autoscaler-ui
$ git pull && git submodule foreach --recursive git submodule sync && git submodule update --init --recursive
$ source .envrc
$ go build -o scalerui src/scalerui/cmd/ui/ui.go
$ chmod +x scalerui

Tests

$ cd app-autoscaler-ui
$ go get github.com/onsi/ginkgo/ginkgo
$ ginkgo -r -race -randomizeAllSpecs
$ cd view
$ npm run test:coverage

Run Locally

  1. Update front-end resources path to yours in app-autoscaler-ui/src/scalerui/exampleconfig/exampleconfig.yml
  ...
  view_path: "/Users/abc/app-autoscaler-ui/view/dev"
  ...
  1. Start
$ cd app-autoscaler-ui
$ ./scalerui -c ./src/scalerui/exampleconfig/exampleconfig.yml
  1. Access

Deploy App-AutoScaler-UI as a CF applictaion

  1. Make sure App-AutoScaler is available in your CF environment

  2. Build and push App-AutoScaler-UI as a CF applictaion

$ cd app-autoscaler-ui/scripts
$ ./build.sh -cd <CF_DOMAIN> -cu <CF_USER> -cp <CF_PASSWORD> -co <CF_ORG> -cs <CF_SPACE> -ac <CLIENT_ID> -as <CLIENT_SECRET> -aso <CLIENT_SCOPE> -host <UI_APP_NAME> -curls <CONSOLE_URLS>

Options for build.sh:

-cd                - cf domain
-cu                - cf user
-cp                - cf password
-co                - cf org
-cs                - cf space
-ac                - autoscaler_client_id (find in the deployment of app-autoscaler)
-as                - autoscaler_client_secret (find in the deployment of app-autoscaler)
-aso               - autoscaler_client_scope
-host              - scalerui host name
-curls             - console urls (support multiple urls, separated by commas)
  1. Access
  • ServiceView page: https://<UI_APP_NAME>.<CF_DOMAIN>/manage/{SERVICE_INSTANCE_ID}
  • AppView Page: https://<UI_APP_NAME>.<CF_DOMAIN>/apps/{APPLICATION_ID}

Project Structures

scripts/ -- build scripts and templates

Folder/File Description
build.sh build and push App-AutoScaler-UI as a CF applictaion
cf_app_config_template.yml back-end config template used in build.sh
config.js.erb front-end config template used in build.sh
manifest_template.yml manifest template used in build.sh
yml2js.rb produce target config file

src/scalerui -- back-end code

Folder/File Description
auth/ authorization middleware: sso and uaa
clickjacking/ clickjacking middleware
cmd/ entrance of the project
config/ config produce and validation
endpoints/ cc endpoints
exampleconfig/ default config yaml
helpers/ useful helpers and tools
https/ https redirection middleware
middleware/ gzip header middleware
models/ object and data structure
routes/ api routes defination
server/ api request handlers
session/ session management

Front-end code -- view/

Typical react/webpack coding styles. Here is instructions for important folders and files

Folder/File Description
mocks/ mocked componets for jest
tests/ jest testing codes, corresponds to src folder
coverage/ testing report, generated by npm run test:coverage
dev/ build files, generated by npm run build
lib/ imported custom libraries
node_modules/ dependencies, generated by npm install
src/ react source codes
src/actions/ flux actions
src/common/ common tools and functions
src/components/ react views
src/constants/ constants and PII files
src/images/ image resources
src/reducers/ redux reducers for actions
src/sources/ api calls to backend
src/store/ flux data stores
src/styles/ sass/css style sheets
src/app.js entrance for project source
src/config.default.js config file for view standalone debug
src/config.js config file for debug
src/config.test.js config file for jest
src/index.html entrance html for view standalone debug
src/index.test.html entrance html
src/router.js route configuration
package.json main config for project
init.js initial actions before build
init.test.js initial actions before local debug
webpack.config.js webpack lifecycle config for dev
webpack.pro.config.js webpack lifecycle config for build

About

A UI project for the Cloud Foundry incubator app-autoscaler

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 64.2%
  • Go 30.9%
  • CSS 3.2%
  • Other 1.7%