From 011121b073f777cbedbbfec5c438dc6805c91f95 Mon Sep 17 00:00:00 2001
From: Emmet Hikory <persia@shipstone.jp>
Date: Tue, 20 Feb 2018 20:17:38 -0500
Subject: [PATCH] Add ARM64 Ubuntu mirror

Change-Id: Icdc38691b76fa9418ebd318710b73526e210ca48
---
 .../files/reprepro/debuntu-updates            | 16 +++++++
 modules/openstack_project/manifests/mirror.pp | 13 +++++-
 .../manifests/mirror_update.pp                | 22 ++++++++++
 .../reprepro/distributions.ubuntu-ports.erb   | 44 +++++++++++++++++++
 4 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 modules/openstack_project/templates/reprepro/distributions.ubuntu-ports.erb

diff --git a/modules/openstack_project/files/reprepro/debuntu-updates b/modules/openstack_project/files/reprepro/debuntu-updates
index f6beeb9134..9b18d87be8 100644
--- a/modules/openstack_project/files/reprepro/debuntu-updates
+++ b/modules/openstack_project/files/reprepro/debuntu-updates
@@ -14,6 +14,22 @@ Architectures: amd64 source
 GetInRelease: no
 VerifyRelease: 437D05B5|C0B21F32
 
+Name: ubuntu-ports
+Method: http://ports.ubuntu.com/ubuntu-ports
+Components: main universe
+UDebComponents: main
+Architectures: arm64 source
+GetInRelease: no
+VerifyRelease: 437D05B5|C0B21F32
+
+Name: ubuntu-ports-security
+Method: http://ports.ubuntu.com/ubuntu-ports
+Components: main universe
+UDebComponents: main
+Architectures: arm64 source
+GetInRelease: no
+VerifyRelease: 437D05B5|C0B21F32
+
 Name: debian
 Method: http://ftp.us.debian.org/debian/
 Components: main
diff --git a/modules/openstack_project/manifests/mirror.pp b/modules/openstack_project/manifests/mirror.pp
index 44589bee07..c33c461ad7 100644
--- a/modules/openstack_project/manifests/mirror.pp
+++ b/modules/openstack_project/manifests/mirror.pp
@@ -146,7 +146,7 @@ class openstack_project::mirror (
     ]
   }
 
-  # Create the symlink to apt.
+  # Create the symlink to Ubuntu
   file { "${www_root}/ubuntu":
     ensure  => link,
     target  => "${mirror_root}/ubuntu",
@@ -157,6 +157,17 @@ class openstack_project::mirror (
     ]
   }
 
+  # Create the symlink to Ubuntu ports
+  file { "${www_root}/ubuntu-ports":
+    ensure  => link,
+    target  => "${mirror_root}/ubuntu-ports",
+    owner   => root,
+    group   => root,
+    require => [
+      File["${www_root}"],
+    ]
+  }
+
   # Create the symlink to ceph-deb-hammer.
   file { "${www_root}/ceph-deb-hammer":
     ensure  => link,
diff --git a/modules/openstack_project/manifests/mirror_update.pp b/modules/openstack_project/manifests/mirror_update.pp
index 93596f36fe..be693ecd88 100644
--- a/modules/openstack_project/manifests/mirror_update.pp
+++ b/modules/openstack_project/manifests/mirror_update.pp
@@ -150,6 +150,28 @@ class openstack_project::mirror_update (
     ]
   }
 
+  ::openstack_project::reprepro { 'ubuntu-ports-reprepro-mirror':
+    confdir       => '/etc/reprepro/ubuntu-ports',
+    basedir       => '/afs/.openstack.org/mirror/ubuntu-ports',
+    distributions => 'openstack_project/reprepro/distributions.ubuntu-ports.erb',
+    updates_file  => 'puppet:///modules/openstack_project/reprepro/debuntu-updates',
+    releases      => ['bionic', 'xenial'],
+  }
+
+  cron { 'reprepro ubuntu-ports':
+    user        => $user,
+    hour        => '*/2',
+    minute      => '0',
+    command     => 'flock -n /var/run/reprepro/ubuntu-ports.lock reprepro-mirror-update /etc/reprepro/ubuntu-ports mirror.ubuntu-ports >>/var/log/reprepro/ubuntu-ports-mirror.log 2>&1',
+    environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
+    require     => [
+       File['/usr/local/bin/reprepro-mirror-update'],
+       File['/etc/afsadmin.keytab'],
+       File['/etc/reprepro.keytab'],
+       ::Openstack_project::Reprepro['ubuntu-ports-reprepro-mirror'],
+    ]
+  }
+
   gnupg_key { 'Ubuntu Archive':
     ensure     => present,
     key_id     => '40976EAF437D05B5',
diff --git a/modules/openstack_project/templates/reprepro/distributions.ubuntu-ports.erb b/modules/openstack_project/templates/reprepro/distributions.ubuntu-ports.erb
new file mode 100644
index 0000000000..7b3a75e3d4
--- /dev/null
+++ b/modules/openstack_project/templates/reprepro/distributions.ubuntu-ports.erb
@@ -0,0 +1,44 @@
+<% @releases.each do |release| -%>
+Origin: Ubuntu
+Codename: <%= release %>
+Description: OpenStack Ubuntu <%= release.capitalize %> mirror
+Architectures: arm64 source
+Components: main universe
+UDebComponents: main
+Contents: .gz
+Update: ubuntu-ports
+Log: <%= @logdir %>/ubuntu-ports-<%= release %>.log
+
+Origin: Ubuntu
+Codename: <%= release %>-updates
+Description: OpenStack Ubuntu <%= release.capitalize %> Updates mirror
+Architectures: arm64 source
+Components: main universe
+UDebComponents: main
+Contents: .gz
+Update: ubuntu-ports
+Log: <%= @logdir %>/ubuntu-ports-<%= release %>-updates.log
+
+Origin: Ubuntu
+Codename: <%= release %>-backports
+Description: OpenStack Ubuntu <%= release.capitalize %> Backports mirror
+Architectures: arm64 source
+Components: main universe
+UDebComponents: main
+Contents: .gz
+Update: ubuntu-ports
+NotAutomatic: yes
+ButAutomaticUpgrades: yes
+Log: <%= @logdir %>/ubuntu-ports-<%= release %>-backports.log
+
+Origin: Ubuntu
+Codename: <%= release %>-security
+Description: OpenStack Ubuntu <%= release.capitalize %> Security mirror
+Architectures: arm64 source
+Components: main universe
+UDebComponents: main
+Contents: .gz
+Update: ubuntu-ports-security
+Log: <%= @logdir %>/ubuntu-ports-<%= release %>-security.log
+
+<% end -%>