Skip to content

Commit

Permalink
wip: Centralize setting of instance name into a dedicated step
Browse files Browse the repository at this point in the history
  • Loading branch information
jcfr committed May 4, 2024
1 parent 0a82b0f commit cebccee
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions .github/workflows/create-instance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,24 +48,30 @@ jobs:
)
echo "instance_flavor=$instance_flavor" >> $GITHUB_OUTPUT
- name: Define instance name
id: define
run: |
instance_name="morpho-cloud-portal_instance-$ISSUE_NUMBER"
echo "instance_name=$instance_name" >> $GITHUB_OUTPUT
env:
ISSUE_NUMBER: ${{ github.event.issue.number }}

- uses: actions/checkout@v4

- name: Create instance
id: instance_create
run: |
source ~/app-cred-morpho-cloud-portal_github-runner-openrc.sh > /dev/null 2>&1
source ~/venv/bin/activate
instance_name="morpho-cloud-portal_instance-$NUMBER"
echo Creating instance "$instance_name"
echo Creating instance "$INSTANCE_NAME"
# See https://jetstream2.exosphere.app/exosphere/helpabout
exoClientUuid=67296a2e-069b-49ca-9ca4-5dd296869ada
# See "currentExoServerVersion" in exosphere/src/Types/Server.elm
exoServerVersion=5
openstack server create "$instance_name" \
openstack server create "$INSTANCE_NAME" \
--nic net-id="auto_allocated_network" \
--security-group "default" \
--security-group "exosphere" \
Expand All @@ -86,9 +92,8 @@ jobs:
--column name \
--column status
echo "instance_name=$instance_name" >> $GITHUB_OUTPUT
env:
NUMBER: ${{ github.event.issue.number }}
INSTANCE_NAME: ${{ steps.define.outputs.instance_name }}
INSTANCE_FLAVOR: ${{ steps.extract.outputs.instance_flavor }}

- name: Poll instance status
Expand All @@ -97,16 +102,15 @@ jobs:
source ~/app-cred-morpho-cloud-portal_github-runner-openrc.sh > /dev/null 2>&1
source ~/venv/bin/activate
instance_name="morpho-cloud-portal_instance-$NUMBER"
echo Polling instance "$instance_name"
echo Polling instance "$INSTANCE_NAME"
max_wait_time=300 # Maximum wait time in seconds (300s -> 5mins)
wait_interval=5 # Interval between status checks in seconds
total_wait_time=0
while [ $total_wait_time -lt $max_wait_time ]; do
status=$(openstack server show "$instance_name" -f json -c properties | \
status=$(openstack server show "$INSTANCE_NAME" -f json -c properties | \
jq -r .properties | \
jq -r .exoSetup | \
jq -r .status)
Expand All @@ -128,7 +132,7 @@ jobs:
echo "status=$status" >> $GITHUB_OUTPUT
env:
NUMBER: ${{ github.event.issue.number }}
INSTANCE_NAME: ${{ steps.define.outputs.instance_name }}

- name: Send mail (not completed)
if: ${{ steps.instance_poll.outputs.status != 'complete' }}
Expand All @@ -142,11 +146,10 @@ jobs:
from: MorphoCloudPortal
to: ${{ steps.extract.outputs.email }}
subject:
"[MorphoCloudPortal] Instance ${{
steps.instance_create.outputs.instance_name }} creation failed"
"[MorphoCloudPortal] Instance ${{ steps.define.outputs.instance_name
}} creation failed"
body:
Failed to create instance ${{
steps.instance_create.outputs.instance_name }}
Failed to create instance ${{ steps.define.outputs.instance_name }}

- name: Retrieve metadata
id: instance_metadata
Expand All @@ -155,25 +158,24 @@ jobs:
source ~/app-cred-morpho-cloud-portal_github-runner-openrc.sh > /dev/null 2>&1
source ~/venv/bin/activate
instance_name="morpho-cloud-portal_instance-$NUMBER"
echo Retrieving metadata from instance "$instance_name"
echo Retrieving metadata from instance "$INSTANCE_NAME"
# Get instance IP
instance_ip=$(
openstack server show $instance_name -c addresses -f json | \
openstack server show $INSTANCE_NAME -c addresses -f json | \
jq -r .addresses.auto_allocated_network[1]
)
echo "instance_ip=$instance_ip" >> $GITHUB_OUTPUT
# Get instance password
instance_pwd=$(
openstack server show $instance_name -c tags -f json | \
openstack server show $INSTANCE_NAME -c tags -f json | \
jq -r '.tags[] | select(startswith("exoPw")) | sub("^exoPw:"; "")'
)
echo "::add-mask::$instance_pwd"
echo "instance_pwd=$instance_pwd" >> $GITHUB_OUTPUT
env:
NUMBER: ${{ github.event.issue.number }}
INSTANCE_NAME: ${{ steps.define.outputs.instance_name }}

- name: Generate Guacamole Connection URL
if: ${{ steps.instance_poll.outputs.status == 'complete' }}
Expand Down Expand Up @@ -219,10 +221,10 @@ jobs:
from: MorphoCloudPortal
to: ${{ steps.extract.outputs.email }}
subject:
"[MorphoCloudPortal] Instance ${{
steps.instance_create.outputs.instance_name }} created"
"[MorphoCloudPortal] Instance ${{ steps.define.outputs.instance_name
}} created"
body: |
Instance ${{ steps.instance_create.outputs.instance_name }} created
Instance ${{ steps.define.outputs.instance_name }} created
Web connect: ${{ steps.guacamole.outputs.connection_url }}
SSH: ssh exouser@${{ steps.instance_metadata.outputs.instance_ip }}
Expand Down

0 comments on commit cebccee

Please sign in to comment.