diff --git a/sky/clouds/service_catalog/images/aws_utils/image_gen.py b/sky/clouds/service_catalog/images/aws_utils/image_gen.py
index cadfee912a9..970988997d2 100644
--- a/sky/clouds/service_catalog/images/aws_utils/image_gen.py
+++ b/sky/clouds/service_catalog/images/aws_utils/image_gen.py
@@ -78,7 +78,7 @@ def copy_image_and_make_public(target_region):
copy_command = (
f"aws ec2 copy-image --source-region {args.region} "
f"--source-image-id {args.image_id} --region {target_region} "
- f"--name 'skypilot-aws-{args.processor}-{args.os_type}-{time.time()}' --output json"
+ f"--name 'skypilot-aws-{args.processor}-{args.os_type}-{time.strftime('%y%m%d')}' --output json"
)
print(copy_command)
result = subprocess.run(copy_command,
diff --git a/sky/clouds/service_catalog/images/provisioners/skypilot.sh b/sky/clouds/service_catalog/images/provisioners/skypilot.sh
index cecb3664736..3bdb6dd0635 100644
--- a/sky/clouds/service_catalog/images/provisioners/skypilot.sh
+++ b/sky/clouds/service_catalog/images/provisioners/skypilot.sh
@@ -4,12 +4,17 @@
sudo systemctl stop unattended-upgrades || true
sudo systemctl disable unattended-upgrades || true
sudo sed -i 's/Unattended-Upgrade "1"/Unattended-Upgrade "0"/g' /etc/apt/apt.conf.d/20auto-upgrades || true
+sudo systemctl stop apt-daily.timer apt-daily-upgrade.timer unattended-upgrades.service
+sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer unattended-upgrades.service
+sudo systemctl mask apt-daily.service apt-daily-upgrade.service unattended-upgrades.service
+sudo systemctl daemon-reload
# Configure dpkg
sudo dpkg --configure --force-overwrite -a
# Apt-get installs
sudo apt-get install jq -y
+sudo apt install retry
# Create necessary directories
mkdir -p ~/sky_workdir
diff --git a/sky/jobs/dashboard/dashboard.py b/sky/jobs/dashboard/dashboard.py
index 89c97274646..9077eab393b 100644
--- a/sky/jobs/dashboard/dashboard.py
+++ b/sky/jobs/dashboard/dashboard.py
@@ -74,11 +74,14 @@ def home():
# Remove filler rows ([''], ..., ['-']).
rows = [row for row in rows if ''.join(map(str, row)) != '']
+ # Get all unique status values.
+ status_values = sorted(list(set(row[-5] for row in rows)))
rendered_html = flask.render_template(
'index.html',
columns=columns,
rows=rows,
last_updated_timestamp=timestamp,
+ status_values=status_values,
)
return rendered_html
diff --git a/sky/jobs/dashboard/templates/index.html b/sky/jobs/dashboard/templates/index.html
index af4f5708bce..7330f96b8cd 100644
--- a/sky/jobs/dashboard/templates/index.html
+++ b/sky/jobs/dashboard/templates/index.html
@@ -44,6 +44,22 @@
.clickable {
cursor: pointer; /* This makes the cursor a pointer when hovering over the element */
}
+
+ .filter-controls {
+ display: flex;
+ gap: 10px;
+ align-items: center; /* This ensures vertical alignment */
+ margin-top: 1rem;
+ position: relative;
+ z-index: 2;
+ }
+
+ /* Customize the select focus/hover states */
+ .form-select:focus {
+ border-color: #dee2e6;
+ box-shadow: 0 0 0 0.1rem rgba(0,0,0,0.1);
+ }
+