Try out apps.fp.o.

This commit is contained in:
Ralph Bean 2014-12-19 15:20:19 +00:00
parent acf926aacb
commit 48f186d358
8 changed files with 691 additions and 0 deletions

View file

@ -41,3 +41,7 @@
- role: releng-dash
website: apps.fedoraproject.org
path: /releng-dash
- role: apps-fp-o
website: apps.fedoraproject.org
path: /

5
roles/apps-fp-o/README Normal file
View file

@ -0,0 +1,5 @@
=========
apps-fp-o
=========
A landing page for https://apps.fedoraproject.org/ featuring javascript magic.

View file

@ -0,0 +1,462 @@
%YAML 1.2
---
name: Fedora Apps
data:
description: >
This is a landing page for Fedora Apps. Fedora Infrastructure is
<em>huge</em>; this page details only the public facing portion of
it all. Explore!
children:
- name: In Development
data:
description: >
These are the apps that we're working on, but that aren't quite
ready for prime-time yet. Try and use them, and report bugs when
they're broken -- it's a big help!.
Check back here from time to time, as this section will change.
children:
- name: Koschei
data:
url: http://koschei.cloud.fedoraproject.org
description: >
Koschei is a continuous integration system for RPM packages. It
tracks dependency changes done in Koji repositories and rebuilds
packages whose dependencies change. It can help packagers to
detect failures early and provide relevant information to narrow
down the cause.
- name: Release Monitoring
data:
url: http://release-monitoring.org
description: >
Code named <a
href="https://github.com/fedora-infra/anitya">anitya</a>, this
project is slated to replace <a
href="https://fedoraproject.org/wiki/Upstream_Release_Monitoring">the
old wiki page</a> for Upstream Release Monitoring. It will
track upstream tarball locations and publish notifications to
the fedmsg bus when new ones are found. Other daemons will
then be responsible for filing bugs, attempting to
automatically build packages, perform some preliminary QA
checks, etc..
- name: Jenkins
data:
url: http://jenkins.cloud.fedoraproject.org
description: >
Our own continuous integration (CI) service! It works now and
you can use it.. we just don't yet give it the same kind of
guarantees that we give our other apps. Look forwards to us
promoting it soon..
- name: Infrastructure
data:
description: >
Tools for sysadmins -- the people who run the servers that run
Fedora (and otherwise).
children:
- name: GeoIP
data:
url: https://geoip.fedoraproject.org
description: >
A simple web service running <a
href="https://github.com/fedora-infra/geoip-city-wsgi">geoip-city-wsgi</a>
that will return geoip information to you.
- name: Easyfix
data:
url: http://fedoraproject.org/easyfix
description: >
A list of easy-to-fix problems for the different projects in
Fedora. Interested in getting into helping out with sysadmin
work or web application development? This should be useful
to you.
- name: DataGrepper
icon: fedmsg.png
data:
url: https://apps.fedoraproject.org/datagrepper
status_mappings: ['fedmsg']
description: >
DataGrepper is an HTTP API for querying the datanommer
database. You can use it to dig into the history of the
<a href="http://fedmsg.com">fedmsg</a> message bus. You
can grab events by username, by package, by message
source, by topic... you name it.
- name: Status
icon: status-good.png
data:
url: http://status.fedoraproject.org
description: >
Sometimes the Fedora Infrastructure team messes up (or
lightning strikes our datacenter(s)). Sorry about that.
You can use this website to check the status. Is it
"down for everyone, or just me?"<br/>Notice the favicon
in your browser tab. It changes based on the status,
so if you keep this open you can check back to it at a
glance.
- name: MirrorManager
icon: downloads.png
data:
url: http://mirrors.fedoraproject.org
status_mappings: ['mirrormanager', 'mirrorlist']
description: >
Fedora is distributed to millions of systems globally.
This would not be possible without the donations of time,
disk space, and bandwidth by hundreds of volunteer system
administrators and their companies or institutions. Your
fast download experience is made possible by these
donations. The list on the <strong>MirrorManager</strong>
site is dynamically generated every hour, listing only
up-to-date mirrors.
- name: Nagios
icon: nagios-logo.png
data:
url: http://admin.fedoraproject.org/nagios
description: >
"Is telia down?" The answer can most definitively be
found here (and in detail). The Fedora Infrastructure
team uses Nagios to monitor the servers that serve
Fedora. Accessing most details requires membership
in the <em>sysadmin</em> group.
- name: Collectd
icon: collectd.png
data:
url: http://admin.fedoraproject.org/collectd
description: >
Tracks and displays statistics on the Fedora
Infrastructure machines over time. Useful for debugging
ineffeciencies and problems.
- name: HAProxy
data:
url: http://admin.fedoraproject.org/haproxy/proxy1
description: >
Shows the health of our proxies. How many bytes?
Concurrent sessions? Health checks?
- name: QA
data:
description: >
Tools for testers -- the people who tell us its broken so we can
fix it.
children:
- name: Taskotron
data:
url: https://taskotron.fedoraproject.org
description: >
Taskotron is a framework for automated task execution and is in
the very early stages of development with the objective to
replace AutoQA for automating selected QA tasks in Fedora.
- name: Releng-Dash
data:
url: https://apps.fedoraproject.org/releng-dash/
description: >
Track the status of the Fedora Release Engineering process.
Did the latest rawhide get rsynced out? How about for the
secondary arches? This read-only dashboard can help you
make a quick check.
- name: Problem Tracker
data:
url: https://retrace.fedoraproject.org
description: >
The Problem Tracker is a platform for collecting and
analyzing package crashes reported via ABRT (Automatic Bug
Reporting Tool). It makes it easy to see what problems
users are hitting the most, and allows you to filter them
by Fedora release, associate, or component.
- name: Blocker Bugs
data:
url: http://qa.fedoraproject.org/blockerbugs
status_mappings: ['blockerbugs']
description: >
The Fedora Blocker Bug Tracker tracks release blocking bugs
and related updates in Fedora releases currently under
development.
- name: Bugzilla
icon: bugzilla.png
data:
url: http://bugzilla.redhat.com
description: >
The Fedora Community makes use of a bugzilla instance
run by Red Hat. Notice something wrong with a Fedora
package? You can file an official bug here.
- name: Kerneltest
icon: tux.png
data:
url: https://apps.fedoraproject.org/kerneltest
description: >
As part of the <a
href="https://fedoraproject.org/wiki/KernelTestingInitiative">kernel
testing initiative</a> we provide a webapp where users and
automated systems can upload test results. If you have
access to hardware where we could catch tricky driver
issues, your assistance here would be much appreciated.
- name: Coordination
data:
description: >
Tools for people -- so we can talk to each other and share content
and ideas.
children:
- name: Paste
data:
url: http://paste.fedoraproject.org
status_mappings: ['fedorapaste']
description: >
Our very own pastebin server. If you yum install the
<strong>fpaste</strong> command, it will use this site
automatically.
- name: Elections
data:
url: http://admin.fedoraproject.org/voting
status_mappings: ['elections']
description: >
As a member of the community, you can now vote for the
different steering committees and for this you will use the
Election application. Voting is a right and a duty as a member
of the community; it is one of the things you can do to
influence the development of Fedora.
- name: Nuancier
icon: nuancier.png
data:
url: http://apps.fedoraproject.org/nuancier
description: >
Nuancier is a simple voting application for the
supplementary wallpapers included in Fedora.
- name: The Mailing lists
icon: mail.png
data:
url: http://lists.fedoraproject.org
status_mappings: ['mailinglists']
description: >
Mailing lists are used for communication within the community.
There are lists for generic topics and lists more dedicated
to a specific topic, there is for sure one for you.
- name: FedoCal
icon: fedocal.png
data:
url: http://apps.fedoraproject.org/calendar
status_mappings: ['fedocal']
description: >
The Fedora Calendar (or <strong>fedocal</strong>), you might
have already guessed, is a public calendar service. You can
create your own calendar, or subscribe to others. Want to
be kept abrest of releases, freezes, and events? This is
the tool for you.
- name: Meetbot
icon: meetbot.png
data:
url: https://meetbot.fedoraproject.org
status_mappings: ['zodbot']
description: >
Fedora Infrastructure runs a friendly IRC bot that you may
know named <a href="https://fedoraproject.org/wiki/Zodbot">zodbot</a>.
Among its many and varied functions is logging IRC meetings,
the archives of which you can find here.
- name: Upstream
data:
description: >
Tools for <a
href="https://fedoraproject.org/wiki/Staying_close_to_upstream_projects">upstream</a>
developers -- because we love you.
children:
- name: github2fedmsg
icon: github.png
data:
url: https://apps.fedoraproject.org/github2fedmsg
status_mappings: ['fedmsg']
description: >
github2fedmsg is a web service that bridges upstream
development activity from <a
href="https://github.com">GitHub</a> into the <a
href="http://fedmsg.com">Fedora Infrastructure message
bus</a>. Visit the self-service dashboard to toggle the
status of your repositories.
- name: Fedora Hosted
icon: trac.png
data:
url: http://fedorahosted.org
status_mappings: ['fedorahosted']
description: >
Fedora is dedicated to open source software. This
commitment can extend beyond regular Fedora offerings.<br/>
<strong>Fedora Hosted</strong> is our most feature rich
hosting solution. It includes an scm, trac instance,
release dir, account system for access control, etc.
This is our most common hosting option. When most groups
want hosting, this is what they want.
- name: Accounts
data:
description: >
Tools for everybody -- use these things to manage your Fedora
Account.
children:
- name: FedoraPeople
data:
url: https://fedorapeople.org
status_mappings: ['people']
description: >
Being a community member you gain access to fedorapeople which
provides you with a space on the web where you can upload
files to share them with the community.
- name: FAS
data:
url: http://admin.fedoraproject.org/accounts
status_mappings: ['fas']
description: >
The Fedora Account System. Update your profile
information and apply for membership in groups.
- name: Notifications
icon: fedmsg.png
data:
url: https://apps.fedoraproject.org/notifications
status_mappings: ['fedmsg']
description: >
Centrally managed preferences for Fedora Infrastructure
notifications to your inbox, irc client, and mobile device.
- name: Badges
icon: badges.png
status_mappings: ['badges']
data:
url: https://badges.fedoraproject.org
description: >
An achievements system for Fedora Contributors! "Badges"
are awarded based on activity in the community. Can you
unlock them all?
You can export your badges to Mozilla's
<a href="http://openbadges.org">Open Badges
Infrastructure</a>
- name: Content
data:
description: >
Tools for wordsmiths -- the apps that store and archive the troves
of content that Fedora authors produce. Blog posts, the wiki, and
more..
children:
- name: Ask Fedora
icon: ask_fedora.png
data:
url: http://ask.fedoraproject.org/
status_mappings: ['ask']
description: >
Any question at all about Fedora? Ask it here.
- name: The Wiki
icon: mediawiki.png
data:
url: http://fedoraproject.org/wiki
status_mappings: ['wiki']
description: >
Maintain your own user profile page, contribute to
documents about features, process, and governance.
- name: Fedora Magazine
icon: magazine.png
data:
url: http://fedoramagazine.org
description: >
Fedora Magazine is a WordPress-based site which delivers all
the news of the Fedora Community. (It replaces the previous
Fedora Weekly News.)
- name: The Planet
icon: planet_logo.png
data:
url: http://planet.fedoraproject.org
description: >
The planet is a blog aggregator, a space accessible to you
as a community member where you can express your opinion and
talk about what you are doing for Fedora.
- name: Docs
data:
url: http://docs.fedoraproject.org
status_mappings: ['docs']
description: >
RTFM! Everything you could ever want to know.
Probably the best place to find documentation about Fedora,
including the changes between releases (and a big kudos to
the translation teams to keep this resource up to date in
the different languages!)
- name: Packaging
data:
description: >
Tools for packagers -- where the pieces of the distribution get
built.
children:
- name: Packages
data:
url: http://apps.fedoraproject.org/packages
status_mappings: ['packages']
description: >
A meta-app over the other packaging apps; the best place to
find out what is in the Fedora repositories. Which
packages are present in which version, who is maintaining
them, what patches have been applied, what bugs have been
reported against them. All these kind of questions can be
answered here.
It is sometimes called "Fedora Community v2" after the old
<a href="http://admin.fedoraproject.org/community">Fedora Community</a> site.
- name: Tagger
icon: tagger.png
data:
url: http://apps.fedoraproject.org/tagger
status_mappings: ['tagger']
description: >
Help build a tag cloud of all our packages.. It's actually
really useful. It'll help improve the search of the
"Packages" webapp.
- name: COPR
icon: copr.png
data:
url: https://copr.fedoraproject.org
status_mappings: ['copr']
description: >
Copr is an easy-to-use automatic build system providing a
package repository as its output. You can make your **own** repositories!
- name: PkgDB
data:
url: http://admin.fedoraproject.org/pkgdb
status_mappings: ['pkgdb']
description: >
Manage ACLs of your packages.
- name: Koji
icon: koji.png
data:
url: http://koji.fedoraproject.org/koji
status_mappings: ['koji']
description: >
Koji is the software that builds RPM packages for the
Fedora project. It uses Mock to create chroot
environments to perform builds that are both safe and
trusted.
- name: Bodhi
icon: bodhi.png
data:
url: http://admin.fedoraproject.org/updates
status_mappings: ['bodhi']
description: >
The tool you will use to push your packages to the Fedora
repositories as an update, first an update to be tested
(repository: updates-testing) then a stable update
(repository: updates). Behold -- the <em>Magic
Cabbage.</em>
- name: SCM
icon: git-logo.png
data:
url: http://pkgs.fedoraproject.org/cgit
status_mappings: ['pkgs']
description: >
Ever wonder <em>exactly</em> what is in the new release
of a Fedora package? This is where the change histories
of all the packages in Fedora for every release of
Fedora (and EPEL) are kept.. forever! A gold mine.
- name: Darkserver
data:
url: https://darkserver.fedoraproject.org
status_mappings: ['darkserver']
description: >
A set of tools and JSON service to help userspace developers
to debug their applications and libraries. People are be
able query the service based on <a
href="https://fedoraproject.org/wiki/Releases/FeatureBuildId">build-id(s)</a>
or rpm package names.
You can read more about <a
href="https://fedoraproject.org/wiki/Darkserver">why you
might want to use it</a> or you can just click below to...

View file

@ -0,0 +1,83 @@
/**
* Copyright (c) 2014, Patrick Uiterwijk <puiterwijk@redhat.com>
* All rights reserved.
*
* This file is part of JSOpenID.
*
* JSOpenID is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JSOpenID is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with JSOpenID. If not, see <http://www.gnu.org/licenses/>.
*/
function respondToLogin(targetOrigin, success, data)
{
// From an iframe, window.parent == parent window
// So if we don't have a window.parent, we're certainly not an iframe
if(window.parent != null)
{
// If we don't have this element in the parent window, this is not an auth iframe
if(window.parent.document.getElementById('jsopenid_ifrm') != null)
{
window.parent.postMessage({"success": success,
"data": data},
targetOrigin);
}
}
}
function tryBackgroundLogin(login_url, callback_success, callback_failed)
{
if(window.parent != null)
{
// Check if we are called recursively (from within a login attempt)
if(window.parent.document.getElementById('jsopenid_ifrm') != null)
{
return;
}
}
// Create the iframe we are going to use
ifrm = document.createElement('iframe');
ifrm.id = 'jsopenid_ifrm';
ifrm.src = login_url;
ifrm.style.width = 0;
ifrm.style.height = 0;
ifrm.style.visibility = "hidden";
// Set up for pingbacks
window.addEventListener('message', function(event)
{
// We don't check don't check event.origin, as it wouldn't add anything worthwhile
// This would prevent a rogue website from saying "The user is now logged in", but we should *never* trust this anyway
// This whole library is only for user convenience
if(event.source != ifrm.contentWindow)
{
// Ignoring response from someone unexpected
return;
}
document.body.removeChild(ifrm);
if(event.data["success"])
{
callback_success(event.data["data"]);
}
else
{
if(callback_failed != null)
{
callback_failed(event.data["data"]);
}
}
}, false);
// HIT IT!
document.body.appendChild(ifrm);
}

View file

@ -0,0 +1,83 @@
/**
* Copyright (c) 2014, Patrick Uiterwijk <puiterwijk@redhat.com>
* All rights reserved.
*
* This file is part of JSOpenID.
*
* JSOpenID is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JSOpenID is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with JSOpenID. If not, see <http://www.gnu.org/licenses/>.
*/
function respondToLogin(targetOrigin, success, data)
{
// From an iframe, window.parent == parent window
// So if we don't have a window.parent, we're certainly not an iframe
if(window.parent != null)
{
// If we don't have this element in the parent window, this is not an auth iframe
if(window.parent.document.getElementById('jsopenid_ifrm') != null)
{
window.parent.postMessage({"success": success,
"data": data},
targetOrigin);
}
}
}
function tryBackgroundLogin(login_url, callback_success, callback_failed)
{
if(window.parent != null)
{
// Check if we are called recursively (from within a login attempt)
if(window.parent.document.getElementById('jsopenid_ifrm') != null)
{
return;
}
}
// Create the iframe we are going to use
ifrm = document.createElement('iframe');
ifrm.id = 'jsopenid_ifrm';
ifrm.src = login_url;
ifrm.style.width = 0;
ifrm.style.height = 0;
ifrm.style.visibility = "hidden";
// Set up for pingbacks
window.addEventListener('message', function(event)
{
// We don't check don't check event.origin, as it wouldn't add anything worthwhile
// This would prevent a rogue website from saying "The user is now logged in", but we should *never* trust this anyway
// This whole library is only for user convenience
if(event.source != ifrm.contentWindow)
{
// Ignoring response from someone unexpected
return;
}
document.body.removeChild(ifrm);
if(event.data["success"])
{
callback_success(event.data["data"]);
}
else
{
if(callback_failed != null)
{
callback_failed(event.data["data"]);
}
}
}, false);
// HIT IT!
document.body.appendChild(ifrm);
}

View file

@ -0,0 +1,5 @@
- name: rebuild apps-fp-o html
shell: /usr/bin/apps-fp-o-yaml2html.py > /srv/web/apps-fp-o/apps-yaml.html
- name: rebuild apps-fp-o json
shell: /usr/bin/apps-fp-o-yaml2json.py > /srv/web/apps-fp-o/js/data.js

View file

@ -0,0 +1,48 @@
define apps-fp-o::proxy(
$website,
$path
) {
include httpd::base
- name: Install that apps-fp-o rpm package
yum: name=apps-fp-o state=present
tags:
- apps-fp-o
- name: Copy in the proxy config
template: >
src=apps.fp.o.conf dest=/etc/httpd/conf.d/{{website}}/apps.fp.o.conf
owner=root group=root mode=0644
notify:
- restart httpd
tags:
- apps-fp-o
- name: Copy in some global assets used around our apps
synchronize: >
src=global/ dest=/srv/web/apps-fp-o/global/
tags:
- apps-fp-o
- name: Copy in our app data yaml
template: >
src=apps.yaml dest=/usr/share/apps-fp-o/apps.yaml
owner=root group=root mode=0644
notify:
- rebuild apps-fp-o html
- rebuild apps-fp-o json
- restart httpd
tags:
- apps-fp-o
# run commands on file change
exec { "/usr/bin/apps-fp-o-yaml2html.py > /srv/web/apps-fp-o/apps-yaml.html":
subscribe => File["/usr/share/apps-fp-o/apps.yaml"],
refreshonly => true
}
exec { "/usr/bin/apps-fp-o-yaml2json.py > /srv/web/apps-fp-o/js/data.js":
subscribe => File["/usr/share/apps-fp-o/apps.yaml"],
refreshonly => true
}
}

View file

@ -0,0 +1 @@
DocumentRoot /srv/web/apps-fp-o/