├── api └── __init__.py ├── frontend ├── .dockerignore ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── img │ │ ├── centos.png │ │ ├── aws_logo.png │ │ ├── 3P-Logos.NOTICE │ │ ├── aws.svg │ │ ├── ec2.svg │ │ ├── ebs.svg │ │ ├── od.svg │ │ ├── pcluster.svg │ │ ├── spot.svg │ │ ├── queue.svg │ │ ├── efs.svg │ │ ├── fsx.svg │ │ ├── m5.svg │ │ ├── p3.svg │ │ └── r5.svg │ ├── flags │ │ ├── bd.svg │ │ ├── de.svg │ │ ├── am.svg │ │ ├── gl.svg │ │ ├── bq.svg │ │ ├── cz.svg │ │ ├── lu.svg │ │ ├── nl.svg │ │ ├── pl.svg │ │ ├── gb-sct.svg │ │ ├── se.svg │ │ ├── fi.svg │ │ ├── lv.svg │ │ ├── dk.svg │ │ ├── id.svg │ │ ├── mc.svg │ │ ├── ua.svg │ │ ├── at.svg │ │ ├── gb-eng.svg │ │ ├── ma.svg │ │ ├── ae.svg │ │ ├── es-ct.svg │ │ ├── bw.svg │ │ ├── ng.svg │ │ ├── td.svg │ │ ├── ga.svg │ │ ├── hu.svg │ │ ├── ne.svg │ │ ├── sl.svg │ │ ├── ye.svg │ │ ├── ci.svg │ │ ├── gh.svg │ │ ├── ml.svg │ │ ├── mv.svg │ │ ├── be.svg │ │ ├── bg.svg │ │ ├── co.svg │ │ ├── dz.svg │ │ ├── ru.svg │ │ ├── th.svg │ │ ├── bl.svg │ │ ├── cr.svg │ │ ├── fr.svg │ │ ├── gf.svg │ │ ├── gn.svg │ │ ├── gp.svg │ │ ├── ie.svg │ │ ├── it.svg │ │ ├── mf.svg │ │ ├── mq.svg │ │ ├── pm.svg │ │ ├── re.svg │ │ ├── wf.svg │ │ ├── yt.svg │ │ ├── mg.svg │ │ ├── ro.svg │ │ ├── tt.svg │ │ ├── ch.svg │ │ ├── sr.svg │ │ ├── ee.svg │ │ ├── mu.svg │ │ ├── no.svg │ │ ├── sj.svg │ │ ├── cd.svg │ │ ├── qa.svg │ │ ├── bf.svg │ │ ├── lc.svg │ │ ├── mk.svg │ │ ├── to.svg │ │ ├── ss.svg │ │ ├── jm.svg │ │ ├── sn.svg │ │ ├── mr.svg │ │ ├── lt.svg │ │ ├── vc.svg │ │ ├── la.svg │ │ ├── pw.svg │ │ ├── jp.svg │ │ ├── gy.svg │ │ ├── az.svg │ │ ├── cg.svg │ │ ├── so.svg │ │ ├── vn.svg │ │ ├── bh.svg │ │ ├── sd.svg │ │ ├── gb.svg │ │ ├── bj.svg │ │ ├── kw.svg │ │ ├── is.svg │ │ ├── tr.svg │ │ ├── sy.svg │ │ ├── ly.svg │ │ ├── bs.svg │ │ ├── gm.svg │ │ ├── tz.svg │ │ ├── bb.svg │ │ ├── cl.svg │ │ ├── fo.svg │ │ ├── ps.svg │ │ ├── gg.svg │ │ ├── sc.svg │ │ ├── ax.svg │ │ ├── bv.svg │ │ ├── dj.svg │ │ ├── tl.svg │ │ ├── cu.svg │ │ ├── pr.svg │ │ ├── nr.svg │ │ ├── ws.svg │ │ ├── ca.svg │ │ ├── cw.svg │ │ ├── cf.svg │ │ ├── mh.svg │ │ ├── lr.svg │ │ ├── jo.svg │ │ ├── tg.svg │ │ ├── tk.svg │ │ ├── rw.svg │ │ ├── pk.svg │ │ ├── tn.svg │ │ ├── ag.svg │ │ ├── pa.svg │ │ ├── fm.svg │ │ ├── cn.svg │ │ ├── kp.svg │ │ ├── gw.svg │ │ ├── kn.svg │ │ ├── cm.svg │ │ ├── mm.svg │ │ ├── za.svg │ │ ├── eh.svg │ │ ├── sg.svg │ │ ├── il.svg │ │ ├── st.svg │ │ ├── sb.svg │ │ ├── na.svg │ │ ├── np.svg │ │ ├── km.svg │ │ ├── bi.svg │ │ ├── tf.svg │ │ ├── gr.svg │ │ ├── hn.svg │ │ ├── in.svg │ │ ├── sk.svg │ │ ├── ls.svg │ │ ├── ve.svg │ │ ├── et.svg │ │ ├── mn.svg │ │ ├── Flags.LICENSE │ │ ├── my.svg │ │ ├── ba.svg │ │ ├── hm.svg │ │ ├── eu.svg │ │ ├── ge.svg │ │ ├── nc.svg │ │ ├── cv.svg │ │ ├── ke.svg │ │ ├── mo.svg │ │ ├── iq.svg │ │ ├── au.svg │ │ ├── uz.svg │ │ ├── ph.svg │ │ ├── ao.svg │ │ ├── pg.svg │ │ ├── gd.svg │ │ ├── uy.svg │ │ ├── tv.svg │ │ ├── nu.svg │ │ ├── tj.svg │ │ ├── kr.svg │ │ ├── ck.svg │ │ └── si.svg │ └── manifest.json ├── src │ ├── .WizardDialog.js.swp │ ├── index.css │ ├── components │ │ ├── DateView.js │ │ ├── InputErrors.js │ │ ├── Loading.js │ │ ├── EmptyState.js │ │ ├── HelpTooltip.js │ │ ├── DeleteDialog.js │ │ └── ConfigView.js │ ├── reportWebVitals.js │ ├── redux │ │ ├── snackbar_actions.js │ │ └── snackbar_reducer.js │ └── pages │ │ ├── Clusters │ │ ├── Details.js │ │ └── StopDialog.js │ │ └── Home │ │ └── Home.js ├── Dockerfile └── package.json ├── scripts ├── run_flask.sh ├── run.sh ├── build.sh ├── build_awslambda.sh └── update.sh ├── .dockerignore ├── NOTICE ├── uwsgi.ini ├── pcluster_logo.png ├── requirements.txt ├── docs ├── static │ ├── architecture.png │ ├── 02-tutorials │ │ ├── create.png │ │ ├── pcm-mfa.png │ │ ├── policy.png │ │ ├── job-list.png │ │ ├── cfn-outputs.png │ │ ├── job-details.png │ │ ├── submit-job.png │ │ ├── cfn-properties.png │ │ ├── sandbox-number.png │ │ ├── headnode-subnet.png │ │ ├── sandbox-number-2.png │ │ ├── submit-job-dialog.png │ │ ├── cluster-properties.png │ │ ├── headnode-additional.png │ │ ├── origination-number.png │ │ ├── headnode-virtual-console.png │ │ └── slurm-accounting │ │ │ └── pcluster │ │ │ ├── sacct │ │ │ ├── slurm_sacct.conf │ │ │ └── slurmdbd.conf │ │ │ ├── cluster-config.yaml.template │ │ │ ├── cluster-config.yaml │ │ │ └── post-install.sh │ └── 01-getting-started │ │ ├── login.png │ │ ├── signup.png │ │ ├── aws-console.png │ │ ├── cfn-outputs.png │ │ ├── main-page.png │ │ ├── pcm-email.png │ │ ├── pcmanager-url.png │ │ ├── pcmanager-creds.png │ │ ├── pcmanager-deploy.png │ │ ├── pcmanager-stack.png │ │ ├── pcmanager-deployed.png │ │ ├── pcmanager-install.png │ │ └── pcmanager-first-page.png ├── archetypes │ └── default.md ├── content │ ├── 02-tutorials │ │ ├── _index.md │ │ └── 01-setup-sms.md │ ├── 01-getting-started │ │ ├── 04-summary.md │ │ ├── _index.md │ │ ├── 03-pcmanager-connect.md │ │ └── 01-aws-console-login.md │ └── _index.md └── config.toml ├── .gitmodules ├── .gitignore ├── CODE_OF_CONDUCT.md ├── Dockerfile.awslambda ├── Dockerfile ├── awslambda └── __init__.py ├── infrastructure ├── upload.sh ├── upload-gov-cloud.sh └── deploy.sh └── .github └── workflows └── gh-pages.yml /api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /scripts/run_flask.sh: -------------------------------------------------------------------------------- 1 | FLASK_APP=app:run flask run 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | frontend 2 | frontend/* 3 | ./frontend/* 4 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | -------------------------------------------------------------------------------- /uwsgi.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | module = app 3 | callable = app 4 | master = true 5 | -------------------------------------------------------------------------------- /pcluster_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/pcluster_logo.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | flask_restful 2 | flask_cors 3 | boto3 4 | requests 5 | python-jose 6 | pyyaml 7 | -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /docs/static/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/architecture.png -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/img/centos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/frontend/public/img/centos.png -------------------------------------------------------------------------------- /frontend/public/img/aws_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/frontend/public/img/aws_logo.png -------------------------------------------------------------------------------- /frontend/src/.WizardDialog.js.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/frontend/src/.WizardDialog.js.swp -------------------------------------------------------------------------------- /docs/static/02-tutorials/create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/create.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/pcm-mfa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/pcm-mfa.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/policy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/policy.png -------------------------------------------------------------------------------- /docs/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/job-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/job-list.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/login.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/signup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/signup.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/cfn-outputs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/cfn-outputs.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/job-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/job-details.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/submit-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/submit-job.png -------------------------------------------------------------------------------- /docs/content/02-tutorials/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Tutorials" 3 | date: 2019-01-24T09:05:54Z 4 | weight: 20 5 | pre: "II ⁃ " 6 | --- 7 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/cfn-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/cfn-properties.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/sandbox-number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/sandbox-number.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/aws-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/aws-console.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/cfn-outputs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/cfn-outputs.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/main-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/main-page.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcm-email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcm-email.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/headnode-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/headnode-subnet.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/sandbox-number-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/sandbox-number-2.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/submit-job-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/submit-job-dialog.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-url.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/cluster-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/cluster-properties.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/headnode-additional.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/headnode-additional.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/origination-number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/origination-number.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/themes/hugo-theme-learn"] 2 | path = docs/themes/hugo-theme-learn 3 | url = https://github.com/matcornic/hugo-theme-learn.git 4 | -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-creds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-creds.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-deploy.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-stack.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | frontend/node_modules 3 | infrastructure/cognitolambda/node_modules 4 | package-lock.json 5 | .DS_Store 6 | .hugo_build.lock 7 | public/* 8 | -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-deployed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-deployed.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-install.png -------------------------------------------------------------------------------- /docs/static/02-tutorials/headnode-virtual-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/02-tutorials/headnode-virtual-console.png -------------------------------------------------------------------------------- /docs/static/01-getting-started/pcmanager-first-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DBezemer/pcluster-manager/main/docs/static/01-getting-started/pcmanager-first-page.png -------------------------------------------------------------------------------- /frontend/public/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/img/3P-Logos.NOTICE: -------------------------------------------------------------------------------- 1 | This product includes assets from Canonical 2 | https://design.ubuntu.com/brand/ubuntu-logo/ 3 | 4 | This product includes assets from Centos 5 | https://wiki.centos.org/ArtWork/Brand/Logo 6 | -------------------------------------------------------------------------------- /frontend/public/flags/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/content/01-getting-started/04-summary.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "d. Summary" 3 | weight = 14 4 | +++ 5 | 6 | In this part of the lab you deployed the AWS ParallelCluster API and Pcluster Manager. You should see a screen that looks like: 7 | 8 | ![Main Page](pcmanager-first-page.png) -------------------------------------------------------------------------------- /frontend/public/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/es-ct.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /frontend/Dockerfile: -------------------------------------------------------------------------------- 1 | # build environment 2 | FROM node:13.12.0-alpine as build 3 | WORKDIR /app 4 | ENV PATH /app/node_modules/.bin:$PATH 5 | ARG PUBLIC_URL= 6 | COPY package.json ./ 7 | COPY package-lock.json ./ 8 | RUN npm ci 9 | RUN npm install react-scripts@3.4.1 -g 10 | COPY . ./ 11 | RUN npm install 12 | RUN npm run build 13 | -------------------------------------------------------------------------------- /frontend/public/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/slurm-accounting/pcluster/sacct/slurm_sacct.conf: -------------------------------------------------------------------------------- 1 | # 2 | ## automatically added by 1Click-HPC 3 | # 4 | # ACCOUNTING 5 | JobAcctGatherType=jobacct_gather/linux 6 | JobAcctGatherFrequency=30 7 | # 8 | AccountingStorageType=accounting_storage/slurmdbd 9 | AccountingStorageHost=@SLURM_DBD_HOST@ 10 | AccountingStorageUser=@SLURM_DBD_USER@ 11 | AccountingStoragePort=6819 12 | -------------------------------------------------------------------------------- /frontend/public/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /frontend/public/flags/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /frontend/public/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Dockerfile.awslambda: -------------------------------------------------------------------------------- 1 | FROM public.ecr.aws/lambda/python:3.8 2 | 3 | COPY --from=frontend-awslambda /app/build ${LAMBDA_TASK_ROOT}/frontend/public 4 | 5 | COPY requirements.txt . 6 | RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" && \ 7 | pip3 install aws-lambda-powertools 8 | 9 | COPY app.py ${LAMBDA_TASK_ROOT} 10 | COPY api ${LAMBDA_TASK_ROOT}/api 11 | COPY awslambda ${LAMBDA_TASK_ROOT}/awslambda 12 | 13 | CMD ["awslambda.entrypoint.lambda_handler"] 14 | -------------------------------------------------------------------------------- /frontend/public/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM tiangolo/uwsgi-nginx-flask:python3.8-alpine 2 | 3 | ENV PYTHONUNBUFFERED=1 4 | ENV STATIC_URL /static 5 | ENV STATIC_PATH /app/frontend/public/static 6 | 7 | WORKDIR /app 8 | 9 | COPY --from=frontend /app/build /app/frontend/public 10 | COPY ./requirements.txt /var/www/requirements.txt 11 | RUN pip install -r /var/www/requirements.txt 12 | ADD requirements.txt . 13 | RUN pip install -r requirements.txt 14 | 15 | RUN ls /app/frontend/public 16 | 17 | ADD api api 18 | ADD uwsgi.ini . 19 | ADD app.py . 20 | -------------------------------------------------------------------------------- /frontend/public/flags/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/public/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/public/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/public/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/public/flags/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /awslambda/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | # with the License. A copy of the License is located at 5 | # 6 | # http://aws.amazon.com/apache2.0/ 7 | # 8 | # or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | # OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | # limitations under the License. 11 | -------------------------------------------------------------------------------- /frontend/public/flags/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /scripts/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker run --rm=true -ti \ 4 | -e AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} \ 5 | -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \ 6 | -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \ 7 | -e API_BASE_URL=${API_BASE_URL} \ 8 | -p 8080:80 \ 9 | pcluster-manager 10 | 11 | docker run --rm=true -ti \ 12 | -e AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} \ 13 | -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \ 14 | -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \ 15 | -e API_BASE_URL=${API_BASE_URL} \ 16 | -p 8080:80 \ 17 | public.ecr.aws/n0x0o5k1/pcluster-manager:latest 18 | -------------------------------------------------------------------------------- /frontend/public/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /frontend/public/flags/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/public/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /frontend/public/flags/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/tl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/cu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/pr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) 4 | ECR_ENDPOINT="${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com" 5 | ECR_REPO=pcluster-manager 6 | PUBLIC_REPO=public.ecr.aws/n0x0o5k1 7 | 8 | pushd frontend 9 | docker build -t frontend . 10 | popd 11 | docker build -t ${ECR_REPO} . 12 | 13 | docker tag ${ECR_REPO} ${ECR_ENDPOINT}/${ECR_REPO}:latest 14 | docker push ${ECR_ENDPOINT}/${ECR_REPO}:latest 15 | 16 | aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${PUBLIC_REPO} 17 | docker tag ${ECR_REPO}:latest ${PUBLIC_REPO}/${ECR_REPO}:latest 18 | docker push ${PUBLIC_REPO}/${ECR_REPO} 19 | -------------------------------------------------------------------------------- /frontend/public/flags/nr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/ws.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/public/flags/ca.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /frontend/public/flags/cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /infrastructure/upload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 4 | 5 | REGIONS=( $(aws ec2 describe-regions --query "Regions[*].RegionName" --output text) ) 6 | #REGIONS=(us-east-1) 7 | 8 | FILES=(SSMSessionProfile-cfn.yaml pcluster-manager-cognito.yaml pcluster-manager.yaml) 9 | 10 | for REGION in "${REGIONS[@]}" 11 | do 12 | if [ "$REGION" != "ap-southeast-3" ]; 13 | then 14 | AWS_DEFAULT_REGION=${REGION} 15 | BUCKET=pcluster-manager-${REGION} 16 | echo Uploading to: ${BUCKET} 17 | for FILE in "${FILES[@]}" 18 | do 19 | aws s3 cp --acl public-read ${SCRIPT_DIR}/${FILE} s3://${BUCKET}/${FILE} 20 | done 21 | fi 22 | done 23 | -------------------------------------------------------------------------------- /docs/content/01-getting-started/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Setup Pcluster Manager" 3 | date: 2019-01-24T09:05:54Z 4 | weight: 10 5 | pre: "I ⁃ " 6 | --- 7 | 8 | This workshop walks you through setting up Pcluster Manager. You learn how to navigate the AWS Management Console, access relevant services, and how to deploy a basic infrastructure. 9 | Specifically, you learn how to: 10 | 11 | - Sign in to the AWS Management Console and explore it. 12 | - Deploy Pcluster Manager 13 | - Connect to the Web UI 14 | 15 | You can proceed to the next stage of the workshop once the preparation completed and the stacks deployed. 16 | 17 | {{% notice note %}} 18 | Some pages are long and you will need to scroll down to read all the instructions. 19 | {{% /notice %}} 20 | -------------------------------------------------------------------------------- /frontend/public/flags/cf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/mh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/slurm-accounting/pcluster/sacct/slurmdbd.conf: -------------------------------------------------------------------------------- 1 | # 2 | ## Sample /opt/slurm/etc/slurmdbd.conf 3 | # 4 | ArchiveEvents=yes 5 | ArchiveJobs=yes 6 | ArchiveResvs=yes 7 | ArchiveSteps=no 8 | ArchiveSuspend=no 9 | ArchiveTXN=no 10 | ArchiveUsage=no 11 | AuthType=auth/munge 12 | DbdHost=@SLURM_DBD_HOST@ 13 | DbdPort=6819 14 | DebugLevel=info 15 | PurgeEventAfter=1month 16 | PurgeJobAfter=12month 17 | PurgeResvAfter=1month 18 | PurgeStepAfter=1month 19 | PurgeSuspendAfter=1month 20 | PurgeTXNAfter=12month 21 | PurgeUsageAfter=24month 22 | SlurmUser=slurm 23 | LogFile=/var/log/slurmdbd.log 24 | PidFile=/var/run/slurmdbd.pid 25 | StorageType=accounting_storage/mysql 26 | StorageUser=@RDS_USER@ 27 | StoragePass=@RDS_PASS@ 28 | StorageHost=@RDS_ENDPOINT@ 29 | StoragePort=@RDS_PORT@ 30 | -------------------------------------------------------------------------------- /frontend/public/flags/lr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/jo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/flags/tg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/tk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/public/flags/rw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/pk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/ag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/pa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/fm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /frontend/src/components/DateView.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import React from 'react'; 12 | 13 | export default function DateView(props) { 14 | var d = new Date(); 15 | d.setTime(Date.parse(props.date)); 16 | return {d.toLocaleString()} 17 | } 18 | -------------------------------------------------------------------------------- /infrastructure/upload-gov-cloud.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 4 | 5 | if [ ! -d ${SCRIPT_DIR}/cognitolambda/node_modules ]; then 6 | pushd ${SCRIPT_DIR}/cognitolambda 7 | npm install 8 | popd 9 | fi 10 | 11 | REGIONS=(us-gov-west-1) 12 | 13 | for REGION in "${REGIONS[@]}" 14 | do 15 | AWS_DEFAULT_REGION=${REGION} 16 | BUCKET=pcluster-manager-${REGION} 17 | echo Uploading to: ${BUCKET} 18 | aws s3 cp --acl public-read ${SCRIPT_DIR}/SSMSessionProfile-cfn.yaml s3://${BUCKET}/SSMSessionProfile-cfn.yaml 19 | aws s3 cp --acl public-read ${SCRIPT_DIR}/pcluster-manager-cognito.yaml s3://${BUCKET}/pcluster-manager-cognito.yaml 20 | aws s3 cp --acl public-read ${SCRIPT_DIR}/pcluster-manager.yaml s3://${BUCKET}/pcluster-manager.yaml 21 | done 22 | -------------------------------------------------------------------------------- /frontend/public/flags/cn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Setup Pcluster Manager" 3 | date: 2019-01-24T09:05:54Z 4 | weight: 1 5 | --- 6 | 7 | ## PCluster Manager - Make HPC Easy 8 | 9 | Quickly and easily create HPC cluster in AWS using Pcluster Manager. This UI uses the AWS ParallelCluster 3.0 API to Create, Update and Delete Clusters as well as access, view logs, and build Amazon Machine Images (AMI's). 10 | 11 | ![Pcluster Manager Architecture](architecture.png) 12 | 13 | #### Want to request a new feature? 14 | 15 | 1. First checkout the [Roadmap](https://github.com/aws-samples/pcluster-manager/projects/1) 16 | 2. If you don't already see your feature, [open a feature request](https://github.com/aws-samples/pcluster-manager/issues/new) 17 | 18 | You can get started with your first cluster in as little as 15 minutes following [**1 - Setup Pcluster Manager**](01-getting-started.html) -------------------------------------------------------------------------------- /frontend/public/flags/kp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/gw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/kn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/cm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/mm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/flags/za.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /frontend/public/flags/eh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/sg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/img/aws.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - main # Set a branch to deploy 7 | pull_request: 8 | 9 | jobs: 10 | deploy: 11 | runs-on: ubuntu-20.04 12 | steps: 13 | - uses: actions/checkout@v2 14 | with: 15 | submodules: 'true' # Fetch Hugo themes (true OR recursive) 16 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod 17 | 18 | - name: Setup Hugo 19 | uses: peaceiris/actions-hugo@v2 20 | with: 21 | hugo-version: 'latest' 22 | # extended: true 23 | 24 | - name: Build 25 | run: | 26 | cd docs/ 27 | hugo --minify 28 | 29 | - name: Deploy 30 | uses: peaceiris/actions-gh-pages@v3 31 | if: github.ref == 'refs/heads/main' 32 | with: 33 | github_token: ${{ secrets.GITHUB_TOKEN }} 34 | publish_dir: ./docs/public 35 | -------------------------------------------------------------------------------- /frontend/public/flags/il.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/st.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/flags/sb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/src/components/InputErrors.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import { 12 | SpaceBetween, 13 | } from "@awsui/components-react"; 14 | 15 | // UI Elements 16 | export default function InputErrors({errors}) { 17 | return errors &&
18 | 19 | {errors.map((error, i) =>
* {error}
)} 20 |
21 |
22 | } 23 | -------------------------------------------------------------------------------- /frontend/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | const reportWebVitals = onPerfEntry => { 12 | if (onPerfEntry && onPerfEntry instanceof Function) { 13 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 14 | getCLS(onPerfEntry); 15 | getFID(onPerfEntry); 16 | getFCP(onPerfEntry); 17 | getLCP(onPerfEntry); 18 | getTTFB(onPerfEntry); 19 | }); 20 | } 21 | }; 22 | 23 | export default reportWebVitals; 24 | -------------------------------------------------------------------------------- /docs/config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "http://aws-samples.github.io/pcluster-manager/" 2 | languageCode = 'en-us' 3 | title = 'Pcluster Manager Docs' 4 | theme = "hugo-theme-learn" 5 | uglyurls = true 6 | sectionPagesMenu = "main" 7 | pygmentsCodeFences = true 8 | 9 | [blackfriday] 10 | hrefTargetBlank = true 11 | 12 | [params] 13 | editURL = "https://github.com/aws-samples/pcluster-manager/tree/main/docs/content/" 14 | themeVariant = "mine" 15 | showVisitedLinks = true 16 | description = "Pcluster Manager Docs" 17 | disableSearch = false 18 | disableAssetsBusting = false 19 | disableLanguageSwitchingButton = true 20 | disableShortcutsTitle = false 21 | disableLandingPageButton = true 22 | 23 | # For search functionality 24 | [outputs] 25 | home = [ "HTML", "RSS", "JSON"] 26 | 27 | [[menu.shortcuts]] 28 | name = " Github" 29 | url = "https://github.com/aws-samples/pcluster-manager" 30 | weight = 10 31 | 32 | [[menu.shortcuts]] 33 | name = " AWS - HPC" 34 | url = "https://aws.amazon.com/hpc/" 35 | weight = 10 36 | -------------------------------------------------------------------------------- /frontend/public/flags/na.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/img/ec2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/src/components/Loading.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import Spinner from "@awsui/components-react/spinner"; 12 | 13 | export default function Loading(props) { 14 | return (
21 | 22 | {props.text || "Loading..."} 23 |
24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /frontend/src/components/EmptyState.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | 12 | // UI Elements 13 | import { Box } from "@awsui/components-react"; 14 | 15 | export default function EmptyState({ title, subtitle, action }) { 16 | return ( 17 | 18 | 19 | {title} 20 | 21 | 22 | {subtitle} 23 | 24 | {action} 25 | 26 | ); 27 | } 28 | -------------------------------------------------------------------------------- /frontend/public/flags/np.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/content/01-getting-started/03-pcmanager-connect.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "c. Connect to Pcluster Manager" 3 | weight = 13 4 | +++ 5 | 6 | 1. During deployment you received an email titled **[PclusterManager] Welcome to Pcluster Manager, please verify your account.**. Click on the link to login with the temporary code provided. 7 | 8 | ![Pcluster Manager](pcm-email.png) 9 | 10 | 2. **Enter the credentials** using the *email* you used when deploying the stack and the *temporary password* from the email above. 11 | 12 | ![Pcluster Manager CloudFormation Stack](pcmanager-creds.png) 13 | 14 | 3. You will be asked to provide a new password. Enter a new password to complete signup. 15 | 16 | ![Signup Screen](signup.png) 17 | 18 | Congrats! You are ready to create your HPC cluster in AWS. Let's do that in the next section. 19 | 20 | {{% notice note %}} 21 | To get the URL outside of the email, go to [**AWS CloudFormation**](https://console.aws.amazon.com/cloudformation/home) > **pcluster-manager** > **Outputs** then click on the **PclusterManagerUrl** to connect. 22 | ![Pcluster Manager Deployed](pcmanager-url.png) 23 | {{% /notice %}} -------------------------------------------------------------------------------- /frontend/public/flags/km.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/flags/bi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/src/components/HelpTooltip.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 5 | // with the License. A copy of the License is located at 6 | // 7 | // http://aws.amazon.com/apache2.0/ 8 | // 9 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 10 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 11 | // limitations under the License. 12 | import * as React from 'react'; 13 | import HelpIcon from '@mui/icons-material/Help'; 14 | 15 | // UI Elements 16 | import { Popover } from "@awsui/components-react"; 17 | 18 | export default function HelpTooltip({ children }) { 19 | return 20 | 24 | 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /frontend/public/flags/tf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/flags/gr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/flags/hn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /frontend/public/flags/in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/slurm-accounting/pcluster/cluster-config.yaml.template: -------------------------------------------------------------------------------- 1 | Region: @AWS_REGION@ 2 | Image: 3 | Os: alinux2 4 | HeadNode: 5 | InstanceType: t3.xlarge 6 | Networking: 7 | SubnetId: @PUBLIC_SUBNET_ID@ 8 | AdditionalSecurityGroups: 9 | - @SLURM_DB_SG@ 10 | Ssh: 11 | KeyName: @KEY_NAME@ 12 | Iam: 13 | S3Access: 14 | - BucketName: @CONFIG_BUCKET@ 15 | EnableWriteAccess: true 16 | AdditionalIamPolicies: 17 | - Policy: arn:aws:iam::aws:policy/SecretsManagerReadWrite 18 | - Policy: arn:aws:iam::aws:policy/AWSPriceListServiceFullAccess 19 | - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore 20 | CustomActions: 21 | OnNodeConfigured: 22 | Script: s3://@CONFIG_BUCKET@/post-install.sh 23 | Args: 24 | - "s3://@CONFIG_BUCKET@" 25 | - "@SECRET_ID@" 26 | - "@RDS_ENDPOINT@" 27 | - "@RDS_PORT@" 28 | Scheduling: 29 | Scheduler: slurm 30 | SlurmQueues: 31 | - Name: queue1 32 | ComputeResources: 33 | - Name: t2micro 34 | InstanceType: t2.micro 35 | MinCount: 0 36 | MaxCount: 10 37 | Networking: 38 | SubnetIds: 39 | - @PRIVATE_SUBNET_ID@ 40 | -------------------------------------------------------------------------------- /frontend/public/flags/sk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/content/01-getting-started/01-aws-console-login.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "a. Access AWS" 3 | date = 2019-09-18T10:46:30-04:00 4 | draft = false 5 | weight = 11 6 | +++ 7 | 8 | Depending on your workshop, you may access the AWS Management Console through direct sign-in ([here](https://signin.aws.amazon.com/console)) or as directed by your trainer. To sign in, enter your AWS Account ID or alias, IAM user name, and password that was provided to you for this lab. 9 | 10 | ![AWS Management Console](login.png) 11 | 12 | After you sign in, take a few minutes to explore the navigation components of the AWS Management Console. 13 | 14 | - A search bar allows you to quickly locate services based on text. 15 | - Recently visited services are located below the search bar. 16 | - In the toolbar, the Services drop-down menu populates a list of all services. 17 | - The Support drop-down menu includes links to support and [documentation](https://docs.aws.amazon.com). 18 | - The Region drop-down menu allows you to select a specific AWS Region. 19 | 20 | Start this workshop by selecting an **AWS Region**: 21 | 22 | Choose the **Region** drop-down menu, then choose **US East (N. Virginia)** us-east-1. 23 | 24 | ![AWS Management Console](aws-console.png) 25 | -------------------------------------------------------------------------------- /frontend/public/flags/ls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/public/flags/ve.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /frontend/public/flags/et.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/mn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/Flags.LICENSE: -------------------------------------------------------------------------------- 1 | This product includes assets from the Boostrap-Select-Country project (MIT) 2 | https://github.com/mojoaxel/bootstrap-select-country 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (c) 2017-2018 country-picker 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. -------------------------------------------------------------------------------- /frontend/public/flags/my.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /frontend/public/img/ebs.svg: -------------------------------------------------------------------------------- 1 | Amazon-Elastic-Block-Store-EBS_dark-bg -------------------------------------------------------------------------------- /frontend/public/flags/ba.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/public/flags/hm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/static/02-tutorials/slurm-accounting/pcluster/cluster-config.yaml: -------------------------------------------------------------------------------- 1 | Region: eu-west-1 2 | Image: 3 | Os: alinux2 4 | HeadNode: 5 | InstanceType: t3.xlarge 6 | Networking: 7 | SubnetId: subnet-03ffbdaeee8264db7 8 | AdditionalSecurityGroups: 9 | - sg-0fec342c8a6f2a5ea 10 | Ssh: 11 | KeyName: aws_rsa 12 | Iam: 13 | S3Access: 14 | - BucketName: cluster-accounting-demo 15 | EnableWriteAccess: true 16 | AdditionalIamPolicies: 17 | - Policy: arn:aws:iam::aws:policy/SecretsManagerReadWrite 18 | - Policy: arn:aws:iam::aws:policy/AWSPriceListServiceFullAccess 19 | - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore 20 | CustomActions: 21 | OnNodeConfigured: 22 | Script: s3://cluster-accounting-demo/post-install.sh 23 | Args: 24 | - "s3://cluster-accounting-demo" 25 | - "arn:aws:secretsmanager:eu-west-1:628437107155:secret:DbPasswdSecret-pcluster-accounting-demo-ypp2xt" 26 | - "slurmdb-rds-instance.co8kwqpvly1t.eu-west-1.rds.amazonaws.com" 27 | - "3306" 28 | Scheduling: 29 | Scheduler: slurm 30 | SlurmQueues: 31 | - Name: queue1 32 | ComputeResources: 33 | - Name: t2micro 34 | InstanceType: t2.micro 35 | MinCount: 0 36 | MaxCount: 10 37 | Networking: 38 | SubnetIds: 39 | - subnet-03ffbdaeee8264db7 40 | -------------------------------------------------------------------------------- /frontend/public/flags/eu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /frontend/public/flags/ge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@awsui/components-react": "^3.0.340", 7 | "@awsui/global-styles": "^1.0.9", 8 | "@emotion/react": "^11.4.1", 9 | "@emotion/styled": "^11.3.0", 10 | "@material-ui/core": "^4.12.3", 11 | "@material-ui/icons": "^4.11.2", 12 | "@material-ui/styles": "^4.11.4", 13 | "@mui/icons-material": "^5.0.1", 14 | "@mui/lab": "^5.0.0-alpha.49", 15 | "@mui/material": "^5.0.2", 16 | "@reduxjs/toolkit": "^1.6.1", 17 | "axios": "^0.21.4", 18 | "js-yaml": "^4.1.0", 19 | "notistack": "^2.0.2", 20 | "react": "^17.0.2", 21 | "react-dom": "^17.0.2", 22 | "react-redux": "^7.2.5", 23 | "react-scripts": "4.0.3", 24 | "web-vitals": "^1.1.2" 25 | }, 26 | "scripts": { 27 | "start": "react-scripts start", 28 | "build": "react-scripts build", 29 | "test": "react-scripts test", 30 | "eject": "react-scripts eject" 31 | }, 32 | "eslintConfig": { 33 | "extends": [ 34 | "react-app", 35 | "react-app/jest" 36 | ] 37 | }, 38 | "browserslist": { 39 | "production": [ 40 | ">0.2%", 41 | "not dead", 42 | "not op_mini all" 43 | ], 44 | "development": [ 45 | "last 1 chrome version", 46 | "last 1 firefox version", 47 | "last 1 safari version" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /frontend/src/redux/snackbar_actions.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | export const ENQUEUE_SNACKBAR = 'ENQUEUE_SNACKBAR'; 12 | export const CLOSE_SNACKBAR = 'CLOSE_SNACKBAR'; 13 | export const REMOVE_SNACKBAR = 'REMOVE_SNACKBAR'; 14 | 15 | export const enqueueSnackbar = (notification) => { 16 | const key = notification.options && notification.options.key; 17 | 18 | return { 19 | type: ENQUEUE_SNACKBAR, 20 | notification: { 21 | ...notification, 22 | key: key || new Date().getTime() + Math.random(), 23 | }, 24 | }; 25 | }; 26 | 27 | export const closeSnackbar = key => ({ 28 | type: CLOSE_SNACKBAR, 29 | dismissAll: !key, // dismiss all if no key has been defined 30 | key, 31 | }); 32 | 33 | export const removeSnackbar = key => ({ 34 | type: REMOVE_SNACKBAR, 35 | key, 36 | }); 37 | -------------------------------------------------------------------------------- /frontend/public/flags/nc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/public/flags/cv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/ke.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /frontend/public/flags/mo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/img/od.svg: -------------------------------------------------------------------------------- 1 | Amazon-EC2_Instance_dark-bg -------------------------------------------------------------------------------- /frontend/public/flags/iq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /frontend/public/img/pcluster.svg: -------------------------------------------------------------------------------- 1 | Product-Name_dark-bg -------------------------------------------------------------------------------- /frontend/public/flags/au.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/uz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /frontend/public/flags/ph.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/ao.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /frontend/public/flags/pg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /scripts/build_awslambda.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) 5 | ECR_ENDPOINT="${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com" 6 | ECR_REPO=pcluster-manager-awslambda 7 | 8 | USAGE="$(basename "$0") [-h] [--release] [--tag TAG]" 9 | GIT_SHA=$(git rev-parse --short HEAD) 10 | TAG=${GIT_SHA} 11 | RELEASE_SET=false 12 | 13 | while [[ $# -gt 0 ]] 14 | do 15 | key="$1" 16 | 17 | case $key in 18 | -h) 19 | echo "$USAGE" >&2 20 | exit 1 21 | ;; 22 | --release) 23 | TAG=latest 24 | RELEASE_SET=true 25 | shift # past argument 26 | ;; 27 | --tag) 28 | TAG=latest 29 | TAG=$2 30 | shift # past argument 31 | shift # past value 32 | ;; 33 | *) # unknown option 34 | echo "$usage" >&2 35 | exit 1 36 | ;; 37 | esac 38 | done 39 | 40 | pushd frontend 41 | if [ ! -d node_modules ]; then 42 | npm install 43 | fi 44 | docker build --build-arg PUBLIC_URL=. -t frontend-awslambda . 45 | popd 46 | docker build -f Dockerfile.awslambda -t ${ECR_REPO} . 47 | 48 | # These upload the container to the public repo 49 | ECR_ENDPOINT="public.ecr.aws/n0x0o5k1" 50 | ECR_IMAGE=${ECR_ENDPOINT}/${ECR_REPO}:${TAG} 51 | aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "${ECR_ENDPOINT}" 52 | docker tag ${ECR_REPO} ${ECR_IMAGE} 53 | docker push ${ECR_IMAGE} 54 | echo "Uploaded: " ${ECR_IMAGE} 55 | 56 | if [ "$RELEASE_SET" == "true" ]; then 57 | DATE_TAG=$(date +%Y%m%d) 58 | ECR_IMAGE=${ECR_ENDPOINT}/${ECR_REPO}:${DATE_TAG} 59 | docker tag ${ECR_REPO} ${ECR_IMAGE} 60 | docker push ${ECR_IMAGE} 61 | echo "Uploaded: " ${ECR_IMAGE} 62 | fi 63 | -------------------------------------------------------------------------------- /frontend/public/img/spot.svg: -------------------------------------------------------------------------------- 1 | Amazon-EC2_Spot-Instance_dark-bg -------------------------------------------------------------------------------- /docs/static/02-tutorials/slurm-accounting/pcluster/post-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -x 4 | set -e 5 | 6 | # Install MySQL 7 | yum install -y mysql 8 | 9 | # Set variables from post-install args 10 | config_bucket=$1 11 | secret_id=$2 12 | rds_endpoint=$3 13 | rds_port=$4 14 | 15 | # Get Slurm database credentials 16 | slurm_db_user=$(aws secretsmanager get-secret-value --secret-id ${secret_id} --region eu-west-1 | jq --raw-output '.SecretString' | jq -r .username) 17 | slurm_db_password=$(aws secretsmanager get-secret-value --secret-id ${secret_id} --region eu-west-1 | jq --raw-output '.SecretString' | jq -r .password) 18 | 19 | # Other variables needed for configuring Slurm 20 | slurm_dbd_host=$(hostname) 21 | slurm_etc=/opt/slurm/etc 22 | 23 | # Copy Slurm configuration files 24 | aws s3 cp --quiet ${config_bucket}/sacct/slurm_sacct.conf ${slurm_etc}/slurm_sacct.conf 25 | aws s3 cp --quiet ${config_bucket}/sacct/slurmdbd.conf ${slurm_etc}/slurmdbd.conf 26 | 27 | # Modify Slurm configuration files 28 | sed -i "s|@SLURM_DBD_HOST@|${slurm_dbd_host}|g" ${slurm_etc}/slurm_sacct.conf 29 | sed -i "s|@SLURM_DBD_USER@|${slurm_db_user}|g" ${slurm_etc}/slurm_sacct.conf 30 | sed -i "s|@SLURM_DBD_HOST@|${slurm_dbd_host}|g" ${slurm_etc}/slurmdbd.conf 31 | sed -i "s|@RDS_USER@|${slurm_db_user}|g" ${slurm_etc}/slurmdbd.conf 32 | sed -i "s|@RDS_PASS@|${slurm_db_password}|g" ${slurm_etc}/slurmdbd.conf 33 | sed -i "s|@RDS_ENDPOINT@|${rds_endpoint}|g" ${slurm_etc}/slurmdbd.conf 34 | sed -i "s|@RDS_PORT@|${rds_port}|g" ${slurm_etc}/slurmdbd.conf 35 | 36 | echo "include slurm_sacct.conf" >> ${slurm_etc}/slurm.conf 37 | chmod 600 ${slurm_etc}/slurmdbd.conf 38 | chown slurm:slurm ${slurm_etc}/slurmdbd.conf 39 | 40 | # Restart Slurm daemons 41 | /opt/slurm/sbin/slurmdbd 42 | systemctl restart slurmctld 43 | -------------------------------------------------------------------------------- /frontend/public/flags/gd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/content/02-tutorials/01-setup-sms.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "a. Setup SMS for MFA" 3 | date = 2019-09-18T10:46:30-04:00 4 | draft = false 5 | weight = 21 6 | +++ 7 | 8 | To enable Multi-Factor Authentication (MFA) with Pcluster Manager there's two setup steps that need to be completed. 9 | 10 | 1. Setup an Origination number 11 | 2. Add a sandbox number 12 | 13 | #### 1. Setup an Origination Number 14 | 15 | 1. Navigate to [Pinpoint Phone Numbers Console](https://console.aws.amazon.com/pinpoint/home?#/sms-account-settings/phoneNumbers) > Click **Request Phone Number** 16 | 17 | Fill out the following options: 18 | 19 | | Option | Description | 20 | | ----------- | ----------- | 21 | | Country | [Your Country] | 22 | | Number Type | **Toll Free** | 23 | | Capabilities | SMS | 24 | | Default Message Type | Transactional | 25 | 26 | ![Origination Number Setup](origination-number.png) 27 | 28 | 2. Click **Next** > **Request** 29 | 30 | #### 2. Add a sandbox number 31 | 32 | 1. Next navigate to the [SNS SMS Console](https://console.aws.amazon.com/sns/v3/home?#/mobile/text-messaging) > Click **Add a phone number" 33 | 34 | ![Sandbox Number](sandbox-number.png) 35 | 36 | 2. Enter the phone number of the user and set verification message language 37 | 38 | ![Sandbox Number 2](sandbox-number-2.png) 39 | 40 | 3. You'll receive a text message, enter that code to verify your number 41 | 42 | #### 3. Test with Pcluster Manager 43 | 44 | Now that you've gotten the SMS portion setup you can go ahead and login. You'll see a screen after you enter your username/passowrd that looks like: 45 | 46 | ![PCM MFA Confirmation](pcm-mfa.png) 47 | 48 | If everthing is setup properly you'll receive a text message that allows you to login. -------------------------------------------------------------------------------- /frontend/public/img/queue.svg: -------------------------------------------------------------------------------- 1 | Amazon-Elastic-Container-Service_Container2_dark-bg -------------------------------------------------------------------------------- /infrastructure/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 5 | # with the License. A copy of the License is located at http://aws.amazon.com/apache2.0/ 6 | # or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 7 | # OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 8 | # limitations under the License. 9 | 10 | random-string() 11 | { 12 | cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1 13 | } 14 | 15 | STACK_NAME=$(echo "PclusterManager"-`random-string 7`) 16 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 17 | 18 | # deploy just the cognito portion of the stack 19 | cognito_infrastructure_file=${SCRIPT_DIR}/pcluster-manager-cognito.yaml 20 | echo "Deploying: " ${cognito_infrastructure_file} "->" ${STACK_NAME} 21 | 22 | aws cloudformation create-stack \ 23 | --stack-name ${STACK_NAME} \ 24 | --parameters ParameterKey=AdminUserEmail,ParameterValue=cgruenwa@amazon.com \ 25 | --disable-rollback \ 26 | --template-body file:///${cognito_infrastructure_file} \ 27 | --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND 28 | 29 | 30 | exit 0 31 | 32 | # deploy the full stack 33 | infrastructure_file=${SCRIPT_DIR}/pcluster-manager.yaml 34 | echo "Deploying: " ${infrastructure_file} "->" ${STACK_NAME} 35 | 36 | aws cloudformation deploy \ 37 | --stack-name ${STACK_NAME} \ 38 | --parameter-overrides AdminUserEmail=user@amazon.com \ 39 | --template-file ${infrastructure_file} \ 40 | --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND 41 | -------------------------------------------------------------------------------- /frontend/public/flags/uy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /frontend/public/flags/tv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/public/img/efs.svg: -------------------------------------------------------------------------------- 1 | Amazon-Elastic-File-System_EFS_dark-bg -------------------------------------------------------------------------------- /frontend/public/flags/nu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /frontend/public/flags/tj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /frontend/public/img/fsx.svg: -------------------------------------------------------------------------------- 1 | Amazon-FSx-for-Lustre_dark-bg -------------------------------------------------------------------------------- /frontend/src/components/DeleteDialog.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import * as React from 'react'; 12 | 13 | // UI Elements 14 | import { 15 | Box, 16 | Button, 17 | Modal, 18 | SpaceBetween, 19 | } from "@awsui/components-react"; 20 | 21 | import { setState, useState } from '../store' 22 | 23 | export function showDialog(id) { 24 | setState(['app', 'confirmDelete', id], true); 25 | } 26 | 27 | export function hideDialog(id) { 28 | setState(['app', 'confirmDelete', id], false); 29 | } 30 | 31 | export function DeleteDialog({children, deleteCallback, header, id}) { 32 | const open = useState(['app', 'confirmDelete', id]); 33 | 34 | const cancel = () => { 35 | setState(['app', 'confirmDelete', id], false) 36 | }; 37 | 38 | return ( 39 | 46 | 47 | 48 | 49 | 50 | 51 | } 52 | header={header} 53 | > 54 | {children} 55 | 56 | ); 57 | } 58 | 59 | // export {DeleteDialog, showDialog}; 60 | -------------------------------------------------------------------------------- /frontend/public/flags/kr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /frontend/src/pages/Clusters/Details.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import React from 'react'; 12 | 13 | import { useState } from '../../store' 14 | 15 | // UI Elements 16 | import Tabs from "@awsui/components-react/tabs" 17 | 18 | // Components 19 | import StackEvents from './StackEvents' 20 | import Instances from './Instances' 21 | import Filesystems from './Filesystems' 22 | import Scheduling from './Scheduling' 23 | import Properties from './Properties' 24 | import Logs from './Logs' 25 | import Loading from '../../components/Loading' 26 | 27 | export default function ClusterTabs() { 28 | 29 | const clusterName = useState(['app', 'clusters', 'selected']); 30 | const cluster = useState(['clusters', 'index', clusterName]); 31 | 32 | return cluster ? 33 | }, 35 | {label: "Instances", id: "instances", content: }, 36 | {label: "Storage", id: "storage", content: }, 37 | {label: "Job Scheduling", id: "scheduling", content: }, 38 | {label: "Stack Events", id: "stack-events", content: }, 39 | {label: "Logs", id: "logs", content: } 40 | ]} /> 41 | :
42 | 43 |
44 | } 45 | -------------------------------------------------------------------------------- /frontend/src/pages/Home/Home.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | 12 | import { setState, useState } from '../../store' 13 | 14 | // UI Elements 15 | import AppLayout from "@awsui/components-react/app-layout"; 16 | 17 | // Components 18 | import SideBar from '../../components/SideBar'; 19 | 20 | function HomeContent() { 21 | return
22 |

Welcome to PCluster Manager

23 | This site provides an interface for creating and managing AWS ParallelCluster instances. 24 |

25 | Please choose from one of the options on the left side-bar. If you only see the 'Home' icon, 26 | then your account is in 'guest' mode and will need to be upgraded by an administrator of this 27 | instance of PCluster Manager. Please contact one of the administrators to have your account 28 | upgraded. 29 |

30 |
31 | } 32 | 33 | export default function Home() { 34 | const navigationOpen = useState(['app', 'sidebar', 'drawerOpen']); 35 | 36 | return ( 37 | {setState(['app', 'sidebar', 'drawerOpen'], e.detail.open)}} 45 | content={} 46 | navigation={} 47 | /> 48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /frontend/public/img/m5.svg: -------------------------------------------------------------------------------- 1 | Amazon-EC2_M5-Instance_dark-bg -------------------------------------------------------------------------------- /frontend/src/redux/snackbar_reducer.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import { ENQUEUE_SNACKBAR, CLOSE_SNACKBAR, REMOVE_SNACKBAR } from './snackbar_actions'; 12 | 13 | const defaultState = { 14 | notifications: [], 15 | }; 16 | 17 | const reducer = (state = defaultState, action) => { 18 | switch (action.type) { 19 | case ENQUEUE_SNACKBAR: 20 | return { 21 | ...state, 22 | notifications: [ 23 | ...state.notifications, 24 | { 25 | key: action.key, 26 | ...action.notification, 27 | }, 28 | ], 29 | }; 30 | 31 | case CLOSE_SNACKBAR: 32 | return { 33 | ...state, 34 | notifications: state.notifications.map(notification => ( 35 | (action.dismissAll || notification.key === action.key) 36 | ? { ...notification, dismissed: true } 37 | : { ...notification } 38 | )), 39 | }; 40 | 41 | case REMOVE_SNACKBAR: 42 | return { 43 | ...state, 44 | notifications: state.notifications.filter( 45 | notification => notification.key !== action.key, 46 | ), 47 | }; 48 | 49 | default: 50 | return state; 51 | } 52 | }; 53 | 54 | export default reducer; 55 | -------------------------------------------------------------------------------- /frontend/public/img/p3.svg: -------------------------------------------------------------------------------- 1 | Amazon-EC2_P3-Instance_dark-bg -------------------------------------------------------------------------------- /frontend/public/flags/ck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /frontend/public/flags/si.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /frontend/public/img/r5.svg: -------------------------------------------------------------------------------- 1 | Amazon-EC2_R5-Instance_dark-bg -------------------------------------------------------------------------------- /frontend/src/pages/Clusters/StopDialog.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | import * as React from 'react'; 12 | 13 | // UI Elements 14 | import { 15 | Box, 16 | Button, 17 | Modal, 18 | SpaceBetween, 19 | } from "@awsui/components-react"; 20 | 21 | import { UpdateComputeFleet } from '../../model' 22 | import { setState, useState } from '../../store' 23 | 24 | function StopDialog({clusterName}) { 25 | const open = useState(['app', 'clusters', 'clusterStop', 'dialog']); 26 | 27 | const cancel = () => { 28 | setState(['app', 'clusters', 'clusterStop', 'dialog'], false) 29 | }; 30 | 31 | const stopCluster = () => { 32 | UpdateComputeFleet(clusterName, "STOP_REQUESTED") 33 | cancel(); 34 | }; 35 | 36 | return ( 37 | 44 | 45 | 46 | 47 | 48 | 49 | } 50 | header="Stop Cluster?" 51 | > 52 | Are you sure you wish to stop cluster {clusterName}? 53 | This will terminate all jobs that are running and terminate any compute nodes running. 54 | 55 | ); 56 | } 57 | 58 | function stopComputeFleet() { 59 | setState(['app', 'clusters', 'clusterStop', 'dialog'], true) 60 | } 61 | 62 | export { StopDialog, stopComputeFleet } 63 | -------------------------------------------------------------------------------- /frontend/src/components/ConfigView.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance 4 | // with the License. A copy of the License is located at 5 | // 6 | // http://aws.amazon.com/apache2.0/ 7 | // 8 | // or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 9 | // OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions and 10 | // limitations under the License. 11 | // 12 | import * as React from 'react'; 13 | 14 | // UI Elements 15 | import { 16 | CodeEditor 17 | } from "@awsui/components-react"; 18 | 19 | export default function ConfigView({config, pending, onChange}){ 20 | const [preferences, setPreferences] = React.useState({'theme': 'textmate'}); 21 | return setPreferences(e.detail)} 27 | onValidate={e => {console.log(e)}} 28 | loading={pending ? true : false} 29 | i18nStrings={{ 30 | loadingState: "Loading code editor", 31 | errorState: 32 | "There was an error loading the code editor.", 33 | errorStateRecovery: "Retry", 34 | editorGroupAriaLabel: "Code editor", 35 | statusBarGroupAriaLabel: "Status bar", 36 | cursorPosition: (row, column) => 37 | `Ln ${row}, Col ${column}`, 38 | errorsTab: "Errors", 39 | warningsTab: "Warnings", 40 | preferencesButtonAriaLabel: "Preferences", 41 | paneCloseButtonAriaLabel: "Close", 42 | preferencesModalHeader: "Preferences", 43 | preferencesModalCancel: "Cancel", 44 | preferencesModalConfirm: "Confirm", 45 | preferencesModalWrapLines: "Wrap lines", 46 | preferencesModalTheme: "Theme", 47 | preferencesModalLightThemes: "Light themes", 48 | preferencesModalDarkThemes: "Dark themes" 49 | }} 50 | /> 51 | } 52 | -------------------------------------------------------------------------------- /scripts/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | REGION=$(python -c 'import boto3; print(boto3.Session().region_name)') 4 | REGION_SET=false 5 | TAG=latest 6 | 7 | USAGE="$(basename "$0") [-h] [--region REGION] [--tag TAG]" 8 | 9 | while [[ $# -gt 0 ]] 10 | do 11 | key="$1" 12 | 13 | case $key in 14 | -h) 15 | echo "$USAGE" >&2 16 | exit 1 17 | ;; 18 | --region) 19 | REGION=$2 20 | REGION_SET=true 21 | shift # past argument 22 | shift # past value 23 | ;; 24 | --tag) 25 | TAG=$2 26 | shift # past argument 27 | shift # past value 28 | ;; 29 | *) # unknown option 30 | echo "$usage" >&2 31 | exit 1 32 | ;; 33 | esac 34 | done 35 | 36 | if [ "$REGION_SET" == "false" ]; then 37 | echo "Warning: Using default region $REGION from your environment. Please ensure this is where pcluster manager is deployed."; 38 | fi 39 | 40 | LAMBDA_ARN=$(aws lambda list-functions --query "Functions[?contains(FunctionName, 'PclusterManagerFunction')] | [0].FunctionArn" | xargs echo) 41 | ECR_REPO=pcluster-manager-awslambda 42 | 43 | PUBLIC_ECR_ENDPOINT="public.ecr.aws/n0x0o5k1" 44 | ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) 45 | ECR_ENDPOINT="${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com" 46 | PRIVATE_ECR_REPO=$(aws ecr describe-repositories --query "repositories[?contains(repositoryName, 'pcluster-manager')] | [0].repositoryName" --output text) 47 | IMAGE=${ECR_ENDPOINT}/${PRIVATE_ECR_REPO}:latest 48 | echo "Logging in to docker..." 49 | AWS_SESSION_TOKEN= AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin "${PUBLIC_ECR_ENDPOINT}" 50 | docker pull ${PUBLIC_ECR_ENDPOINT}/${ECR_REPO}:${TAG} 51 | docker tag ${PUBLIC_ECR_ENDPOINT}/${ECR_REPO}:${TAG} ${IMAGE} 52 | echo "Logging in to private repo..." 53 | aws ecr get-login-password --region ${REGION} | docker login --username AWS --password-stdin "${ECR_ENDPOINT}" 54 | echo "Pushing private docker container..." 55 | docker push ${IMAGE} 56 | echo "Updating lambda..." 57 | aws lambda update-function-code --function-name ${LAMBDA_ARN} --image-uri ${IMAGE} --publish 58 | --------------------------------------------------------------------------------