From e920f6c9f9a939a8a0e73226d518afb94ba6b7a8 Mon Sep 17 00:00:00 2001 From: Alex Polvi Date: Wed, 12 Mar 2014 17:48:16 -0700 Subject: [PATCH 1/2] wip, add nova-agent-watcher powered by cloudinit --- .../coreos-cloudinit-9999.ebuild | 2 +- .../nova-agent-watcher-0.0.1.ebuild | 1 + .../nova-agent-watcher-9999.ebuild | 35 +++++++++++++++++++ .../coreos-base/oem-rackspace/files/run | 3 +- .../oem-rackspace/oem-rackspace-0.0.1.ebuild | 4 +++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 120000 sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-0.0.1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild index b1d75cb872..7a32861613 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild @@ -9,7 +9,7 @@ CROS_WORKON_REPO="git://github.com" if [[ "${PV}" == 9999 ]]; then KEYWORDS="~amd64" else - CROS_WORKON_COMMIT="d823f99f7d491b84e4bc91f492bf2aefef6846b5" # tag v0.1.1 + CROS_WORKON_COMMIT="6a6897831a8ada4cab112001620b08b0e31dfe89" # tag v0.1.1 KEYWORDS="amd64" fi diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-0.0.1.ebuild new file mode 120000 index 0000000000..9723e177c8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-0.0.1.ebuild @@ -0,0 +1 @@ +nova-agent-watcher-9999.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild new file mode 100644 index 0000000000..475dbe4a62 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild @@ -0,0 +1,35 @@ +# Copyright (c) 2014 CoreOS, Inc.. All rights reserved. +# Distributed under the terms of the GNU General Public License v2 + +EAPI=4 +CROS_WORKON_PROJECT="coreos/nova-agent-watcher" +CROS_WORKON_LOCALNAME="nova-agent-watcher" +CROS_WORKON_REPO="git://github.com" + +if [[ "${PV}" == 9999 ]]; then + KEYWORDS="~amd64" +else + CROS_WORKON_COMMIT="bff26eea5578ca36115707d46d5bdc865d69a460" # tag v0.1.1 + KEYWORDS="amd64" +fi + +inherit cros-workon systemd + +DESCRIPTION="nova-agent-watcher" +HOMEPAGE="https://github.com/coreos/nova-agent-watcher" +SRC_URI="" + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="" + +DEPEND=">=dev-lang/go-1.2" + +src_compile() { + ./build || die +} + +src_install() { + dobin ${S}/scripts/gentoo-to-networkd + dobin ${S}/bin/nova-agent-watcher +} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/run b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/run index 98506fa240..5cd917d67e 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/run +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/run @@ -1,4 +1,3 @@ #!/bin/bash -systemctl enable --runtime /usr/share/oem/system/* -systemctl start oem.target +/usr/bin/systemd-run /usr/share/oem/usr/bin/nova-agent-watcher -watch-dir=/usr/share/oem/nova-agent -scripts-dir=/usr/share/oem/usr/bin/ diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/oem-rackspace-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/oem-rackspace-0.0.1.ebuild index 50afaa3c74..a3583df7ab 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/oem-rackspace-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/oem-rackspace-0.0.1.ebuild @@ -20,6 +20,10 @@ IUSE="" EGIT_REPO_URI="https://github.com/coreos/nova-agent-container.git" EGIT_COMMIT="44af5608e9a9e43fe83d05f03049a1f66d564930" +RDEPEND=" + coreos-base/nova-agent-watcher +" + src_install() { rsync --exclude=".git" -aq ${S}/ ${D}/nova-agent/ rsync -aq ${FILESDIR}/systemd/ ${D}/system/ From d2b07a1981603097fa8bac229bf5cdb1a7b2a958 Mon Sep 17 00:00:00 2001 From: Alex Polvi Date: Thu, 13 Mar 2014 06:40:58 +0000 Subject: [PATCH 2/2] feat(rackspace): update rackspace to use cloudinit --- .../coreos-cloudinit-9999.ebuild | 2 +- .../nova-agent-watcher-9999.ebuild | 2 +- .../oem-rackspace/files/ifconfig.sh | 328 ------------------ .../coreos-base/oem-rackspace/files/init.yml | 19 + .../coreos-base/oem-rackspace/files/net.sh | 32 -- .../oem-rackspace/files/resolvconf.sh | 10 - .../coreos-base/oem-rackspace/files/run | 3 +- .../oem-rackspace/files/run-nova-agent.sh | 12 - .../coreos-base/oem-rackspace/files/ssh.sh | 10 - .../files/systemd/nova-agent.service | 5 - .../oem-rackspace/files/systemd/oem.target | 9 - .../files/systemd/setup-networking.service | 7 - .../files/systemd/setup-resolvconf.service | 7 - .../files/systemd/setup-ssh.service | 6 - .../oem-rackspace/oem-rackspace-0.0.1.ebuild | 9 +- 15 files changed, 25 insertions(+), 436 deletions(-) delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/ifconfig.sh create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/init.yml delete mode 100755 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/net.sh delete mode 100755 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/resolvconf.sh delete mode 100755 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/run-nova-agent.sh delete mode 100755 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/ssh.sh delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/systemd/nova-agent.service delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/systemd/oem.target delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/systemd/setup-networking.service delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/systemd/setup-resolvconf.service delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/systemd/setup-ssh.service diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild index 7a32861613..f866232537 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-cloudinit/coreos-cloudinit-9999.ebuild @@ -9,7 +9,7 @@ CROS_WORKON_REPO="git://github.com" if [[ "${PV}" == 9999 ]]; then KEYWORDS="~amd64" else - CROS_WORKON_COMMIT="6a6897831a8ada4cab112001620b08b0e31dfe89" # tag v0.1.1 + CROS_WORKON_COMMIT="8830bc8fef156f4fa567272aadff42d49bedcd9a" # tag v0.1.1 KEYWORDS="amd64" fi diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild index 475dbe4a62..5e3e355c11 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/nova-agent-watcher/nova-agent-watcher-9999.ebuild @@ -9,7 +9,7 @@ CROS_WORKON_REPO="git://github.com" if [[ "${PV}" == 9999 ]]; then KEYWORDS="~amd64" else - CROS_WORKON_COMMIT="bff26eea5578ca36115707d46d5bdc865d69a460" # tag v0.1.1 + CROS_WORKON_COMMIT="8b6865a7804e10e435a10a1ef5484be4ab5cdcce" # tag v0.1.1 KEYWORDS="amd64" fi diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/ifconfig.sh b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/ifconfig.sh deleted file mode 100644 index 2afa66cb54..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace/files/ifconfig.sh +++ /dev/null @@ -1,328 +0,0 @@ -# Copyright (c) 2007-2008 Roy Marples -# Released under the 2-clause BSD license. - -ifconfig_depend() -{ - program /sbin/ifconfig /bin/ifconfig - provide interface -} - -_up() -{ - ifconfig "${IFACE}" up -} - -_down() -{ - ifconfig "${IFACE}" down -} - -_exists() -{ - [ -e /sys/class/net/"$IFACE" ] -} - -_ifindex() -{ - local index=-1 - local f v - if [ -e /sys/class/net/"${IFACE}"/ifindex ]; then - index=$(cat /sys/class/net/"${IFACE}"/ifindex) - else - for f in /sys/class/net/*/ifindex ; do - v=$(cat $f) - [ $v -gt $index ] && index=$v - done - : $(( index += 1 )) - fi - echo "${index}" - return 0 -} - -_is_wireless() -{ - # Support new sysfs layout - [ -d /sys/class/net/"${IFACE}"/wireless -o \ - -d /sys/class/net/"${IFACE}"/phy80211 ] && return 0 - - [ ! -e /proc/net/wireless ] && return 1 - grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless -} - -_set_flag() -{ - ifconfig "${IFACE}" "$1" -} - -_get_mac_address() -{ - local mac=$(LC_ALL=C ifconfig "${IFACE}" | \ - sed -n -e 's/.* \(HWaddr\|ether\) \(..:..:..:..:..:..\).*/\2/p') - - case "${mac}" in - 00:00:00:00:00:00);; - 44:44:44:44:44:44);; - FF:FF:FF:FF:FF:FF);; - "");; - *) echo "${mac}"; return 0;; - esac - - return 1 -} - -_set_mac_address() -{ - ifconfig "${IFACE}" hw ether "$1" -} - -_get_inet_address() -{ - set -- $(LC_ALL=C ifconfig "${IFACE}" | - sed -n -e 's/.*\(inet addr:\|inet \)\([^ ]*\).*\(Mask:\|netmask \)\([^ ]*\).*/\2 \4/p') - [ -z "$1" ] && return 1 - - echo -n "$1" - shift - echo "/$(_netmask2cidr "$1")" -} - -_get_inet_addresses() -{ - local iface=${IFACE} i=0 - local addrs="$(_get_inet_address)" - - while true; do - local IFACE="${iface}:${i}" - _exists || break - local addr="$(_get_inet_address)" - [ -n "${addr}" ] && addrs="${addrs}${addrs:+ }${addr}" - : $(( i += 1 )) - done - echo "${addrs}" -} - -_cidr2netmask() -{ - local cidr="$1" netmask="" done=0 i=0 sum=0 cur=128 - local octets= frac= - - local octets=$(( cidr / 8 )) - local frac=$(( cidr % 8 )) - while [ ${octets} -gt 0 ]; do - netmask="${netmask}.255" - : $(( octets -= 1 )) - : $(( done += 1 )) - done - - if [ ${done} -lt 4 ]; then - while [ ${i} -lt ${frac} ]; do - : $(( sum += cur )) - : $(( cur /= 2 )) - : $(( i += 1 )) - done - netmask="${netmask}.${sum}" - : $(( done += 1 )) - - while [ ${done} -lt 4 ]; do - netmask="${netmask}.0" - : $(( done += 1 )) - done - fi - - echo "${netmask#.*}" -} - -_add_address() -{ - if [ "$1" = "127.0.0.1/8" -a "${IFACE}" = "lo" ]; then - ifconfig "${IFACE}" "$@" 2>/dev/null - return 0 - fi - - case "$1" in - *:*) ifconfig "${IFACE}" inet6 add "$@"; return $?;; - esac - - # IPv4 is tricky - ifconfig requires an aliased device - # for multiple addresses - local iface="${IFACE}" - if LC_ALL=C ifconfig "${iface}" | grep -Eq '\/dev/null)" ] && return 0 - - ebegin "Destroying tunnel ${IFACE}" - iptunnel del "${IFACE}" - eend $? -} - -# Is the interface administratively/operationally up? -# The 'UP' status in ifconfig/iproute2 is the administrative status -# Operational state is available in iproute2 output as 'state UP', or the -# operstate sysfs variable. -# 0: up -# 1: down -# 2: invalid arguments -is_admin_up() -{ - local iface="$1" - [ -z "$iface" ] && iface="$IFACE" - ifconfig "${iface}" | \ - sed -n '1,1{ /flags=.*[<,]UP[,>]/{ q 0 }}; q 1; ' -} - -is_oper_up() -{ - local iface="$1" - [ -z "$iface" ] && iface="$IFACE" - read state