Closed Bug 598761 Opened 9 years ago Closed 9 years ago

Launch Army of Awesome page on 10/5

Categories

(Infrastructure & Operations Graveyard :: WebOps: Other, task, minor)

All
Other
task
Not set
minor

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: williamr, Assigned: oremj)

References

()

Details

(Whiteboard: 10/5/2010 @ 7pm)

Once we give the "go ahead", please launch the Army of Awesome page on SUMO on Thursday 9/30.

The page should live at: http://support.mozilla.com/army-of-awesome

Alex or Fred will post the link to the repository and any deployment directions below.

Note: launching this page is a Q3 goal for both Engagement and SUMO, so it's important that we launch on 9/30.
Blocks: 584886
Doesn't this depend on, rather than block, bug 584866?
No longer blocks: 584886
Depends on: 584886
(In reply to comment #1)
> Doesn't this depend on, rather than block, bug 584866?

s/bug 584866/bug 584886, sorry; and thanks for fixing the dependency
I don't think this needs to be under the Infra group, it should be fine to be public. Would someone mind changing that?
Group: infra
Giving to oremj, so he can put this app through all the proper steps.
Assignee: server-ops → jeremy.orem+bugs
What is the release time window for this? At night?
The push window is from 7pm - 11pm.  Anywhere in there WFM.
Flags: needs-downtime+
Whiteboard: 09/30/2010 @ 7pm
We're pushing this back to Tuesday (10/5) so we have time to fix layout and (more importantly) security bugs. I've updated the whiteboard to 10/5/2010.

Will Jeremy still handle this? Or should it be reassigned?

Is the push window still 7pm - 11pm?
Summary: Launch Army of Awesome page on 9/30 → Launch Army of Awesome page on 10/5
Whiteboard: 09/30/2010 @ 7pm → 10/5/2010 @ 7pm
@mrz @oremj: checking in on the questions from comment 7. Thanks
Me or someone else will be around to handle this.
Adding bug 592776 to the list of things to do, provided QA verifies.
Heeeeere's the deployment tasks!

IRC: #sumodev
Phone: 92 309#

The big one: from the dev perspective we're ready to move onto the vendor library.

svn tag: https://svn.mozilla.org/projects/sumo/tags/1.5/1.5.6.3_r75279_20101005
git tag: 2.2.5


Vendor lib stuff:
* inside the kitsune directory:
  git clone --recursive git://github.com/jsocol/kitsune-lib vendor
* turn off the virtualenv
* make sure the dependencies from requirements/compiled.txt are installed system-wide
** IIRC we have RPMs for all of these, except possibly...
** Jinja2 2.5.2 is required. 2.3.1 won't work.


Generic deployment stuff:
* schematic migrations
** If we switch to the vendor lib first, then you'll want to run
   python26 vendor/src/schematic/schematic migrations
* ./manage.py compress_assets (should take 6-12 seconds, requires Java)
* webroot/htaccess.sh
* celeryd -- kill it dead and restart
* flush caches


Customer Care stuff:
* Add Twitter keys to settings_local (not pasting in a public bug).
* Add new cron, every minute: ./manage.py cron collect_tweets


I think that's it, SUMO 2.2.5/Customer Care!
I goofed and missed announcing this - I don't think I thought it'd be a big push or be user impacting.  

Anyone want to convince me otherwise?
(In reply to comment #12)
> I goofed and missed announcing this - I don't think I thought it'd be a big
> push or be user impacting.  
> 
> Anyone want to convince me otherwise?

Big push, ya I'd say so, since it was > 100 lines of code and impacts the database.


User impacting?  I sure hope it only impacts users in a positive way :)  Meaning, if everything goes well, we won't be causing any downtime.
It will be user-awesome!
And if it goes not well, what happens?
(In reply to comment #15)
> And if it goes not well, what happens?

This push is relatively low-risk, in that the majority of the changes are in a new, isolated feature. It's still non-trivial, but not quite as risky as the recent major SUMO pushes (eg 2.2).

In the worst case scenario, we should be able to roll back by dropping a database column (maybe some new tables but they'd be less crucial) and reverting to the previous tags.
In case something goes wrong, let's just have a database dump ready. We could either pull a database slave or get a database dump before starting the push.
(In reply to comment #17)
> In case something goes wrong, let's just have a database dump ready. We could
> either pull a database slave or get a database dump before starting the push.

We'd only need this in the event of a shockingly catastrophic failure, but stopping replication on a slave for a little while is pretty easy insurance.
(In reply to comment #11)
> * Add Twitter keys to settings_local (not pasting in a public bug).

I have these.  When you need them, ping me in IRC and I'll share
Running migration 32:
BEGIN;
CREATE TABLE `customercare_tweet` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `tweet_id` bigint NOT NULL UNIQUE,
    `raw_json` longtext NOT NULL,
    `locale` varchar(20) NOT NULL,
    `created` datetime NOT NULL
)
;
CREATE INDEX `customercare_tweet_928541cb` ON `customercare_tweet` (`locale`);
CREATE INDEX `customercare_tweet_3216ff68` ON `customercare_tweet` (`created`);
COMMIT;

That took 0.07 seconds
################################################## 

Running migration 33:
BEGIN;
CREATE TABLE `customercare_cannedcategory` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `title` varchar(255) NOT NULL,
    `weight` integer NOT NULL
)
;
CREATE TABLE `customercare_cannedresponse` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `title` varchar(255) NOT NULL,
    `response` varchar(140) NOT NULL
)
;
CREATE TABLE `customercare_categorymembership` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `category_id` integer NOT NULL,
    `response_id` integer NOT NULL,
    `weight` integer NOT NULL
)
;
ALTER TABLE `customercare_categorymembership` ADD CONSTRAINT `category_id_refs_id_e187a5e8` FOREIGN KEY (`category_id`) REFERENCES `customercare_cannedcategory` (`id`);
ALTER TABLE `customercare_categorymembership` ADD CONSTRAINT `response_id_refs_id_8f9177e9` FOREIGN KEY (`response_id`) REFERENCES `customercare_cannedresponse` (`id`);
CREATE INDEX `customercare_cannedcategory_f8f0a775` ON `customercare_cannedcategory` (`weight`);
CREATE INDEX `customercare_categorymembership_42dc49bc` ON `customercare_categorymembership` (`category_id`);
CREATE INDEX `customercare_categorymembership_d5ea739f` ON `customercare_categorymembership` (`response_id`);
CREATE INDEX `customercare_categorymembership_f8f0a775` ON `customercare_categorymembership` (`weight`);
COMMIT;

That took 0.16 seconds
################################################## 

Running migration 34:
INSERT IGNORE INTO `django_content_type` (`name`, `app_label`, `model`) VALUES 
('tweet', 'customercare', 'tweet'),
('canned category', 'customercare', 'cannedcategory'),
('canned response', 'customercare', 'cannedresponse'),
('category membership', 'customercare', 'categorymembership');

SET @tweet_ct = (SELECT `id` FROM `django_content_type` WHERE `name` = 'tweet'); 
SET @canned_cat_ct = (SELECT `id` FROM `django_content_type` WHERE `name` = 'canned category');
SET @canned_resp_ct = (SELECT `id` FROM `django_content_type` WHERE `name` = 'canned response');
SET @cat_member_ct = (SELECT `id` FROM `django_content_type` WHERE `name` = 'category membership');

INSERT IGNORE INTO `auth_permission` (`name`, `content_type_id`, `codename`) VALUES 
('Can add tweet', @tweet_ct, 'add_tweet'),
('Can change tweet', @tweet_ct, 'change_tweet'),
('Can delete tweet', @tweet_ct, 'delete_tweet'),
('Can add canned category', @canned_cat_ct, 'add_cannedcategory'),
('Can change canned category', @canned_cat_ct, 'change_cannedcategory'),
('Can delete canned category', @canned_cat_ct, 'delete_cannedcategory'),
('Can add canned response', @canned_resp_ct, 'add_cannedresponse'),
('Can change canned response', @canned_resp_ct, 'change_cannedresponse'),
('Can delete canned response', @canned_resp_ct, 'delete_cannedresponse'),
('Can add category membership', @cat_member_ct, 'add_categorymembership'),
('Can change category membership', @cat_member_ct, 'change_categorymembership'),
('Can delete category membership', @cat_member_ct, 'delete_categorymembership');

That took 0.18 seconds
################################################## 

Running migration 35:
INSERT INTO `customercare_cannedcategory` (`id`, `title`, `weight`) VALUES 
(1, "Welcome and Thanks", 0),
(2, "Using Firefox", 1),
(3, "Firefox Beta", 2),
(4, "Support", 3),
(5, "Get Involved", 4);

INSERT INTO `customercare_cannedresponse` (`id`, `title`, `response`) VALUES 
(1, "Welcome to our community", "Thanks for joining Mozilla! You're now part of our global community. We're here if you need help: http://mzl.la/bMDof6"),
(2, "Thanks for using Firefox", "Thanks for using Firefox! You're not just a user to us, but part of a community that's 400M strong: http://mzl.la/9whtWo"),
(3, "We're a non-profit organization", "Hey, I'm a Mozilla volunteer. Did you know Mozilla is made up of 1000s of us worldwide? More here: http://mzl.la/cvlwvd"),
(4, "Tip & tricks", "Need help getting started with Firefox? Here are some tips & tricks for getting the most out of it: http://mzl.la/c0B9P2"),
(5, "Customize Firefox with add-ons", "Have you tried add-ons? Cool apps for shopping, music, news, whatever you do online. Start here: http://mzl.la/blOuoD"),
(6, "Add-on reviews", "Just getting started with Firefox? Add-ons personalize it with cool features & function. User reviews: http://mzl.la/cGypVI"),
(7, "Upgrade Firefox", "Hey, maybe you need to upgrade Firefox? New version is speedier with a lot more going on. Download: http://mzl.la/9wJe30"),
(8, "Update plugins and add-ons", "Have you updated your plug-ins and add-ons? Should work out the kinks. Here's the place to refresh: http://mzl.la/cGCg12"),
(9, "Try the Beta", "Try the future of Firefox! We need your help testing the new beta. Hop on board: http://mzl.la/d23n7a"),
(10, "Firefox Sync", "Tried Firefox Sync? It's awesome! Switch computers & it saves open tabs, pwords, history. Try it: http://mzl.la/aHHUYA"),
(11, "Firefox Panorama", "Heard about Firefox Panorama? It groups and displays your tabs, eliminating clutter. Give it a whirl! http://mzl.la/d21MyY"),
(12, "Fix crashes", "Sorry your Firefox is crashing. Here's a list of quick fixes to prevent that from happening again: http://mzl.la/atSsFt"),
(13, "Slow Firefox startup", "Slow start could mean your Firefox just needs a refresh. Here are tips to make Firefox load faster: http://mzl.la/9bB1FY"),
(14, "Quick Firefox fixes", "Have you tried Firefox support? If their quick fixes don't solve it, volunteers are ready to help out: http://mzl.la/9V9uWd"),
(15, "Ask SUMO", "Maybe ask SUMO about this issue? Firefox's community support team. They'll know what's up: http://mzl.la/bMDof6"),
(16, "Get involved with Mozilla", "Want a better web? Join the Mozilla movement. There is something to do for everyone. Get started: http://mzl.la/cufJmX"),
(17, "Join Drumbeat", "Want to spark a movement? Mozilla Drumbeat is your chance to keep the web open and free. More info: http://mzl.la/aIXCLA"),
(18, "Become a beta tester", "Become a beta tester! Help develop the next Firefox. You don't have to be a techie to contribute: http://mzl.la/d23n7a"),
(19, "Mozilla Developer Network", "Open up the web & make it better! Build web pages, apps and add-ons here: Mozilla Developer Network http://mzl.la/9gQfrn"),
(20, "Report a bug", "Thanks for finding a bug. It makes everyone's Firefox experience better if you report it. It''s easy: http://mzl.la/bcujVc");

INSERT INTO `customercare_categorymembership` (`id`, `category_id`, `response_id`, `weight`) VALUES 
(1, 1, 1, 0),
(2, 1, 2, 1),
(3, 1, 3, 2),
(4, 1, 4, 3),
(5, 2, 5, 0),
(6, 2, 6, 1),
(7, 2, 7, 2),
(8, 2, 8, 3),
(9, 3, 9, 0),
(10, 3, 10, 1),
(11, 3, 11, 2),
(12, 4, 12, 0),
(13, 4, 13, 1),
(14, 4, 14, 2),
(15, 4, 15, 3),
(16, 5, 16, 0),
(17, 5, 17, 1),
(18, 5, 18, 2),
(19, 5, 19, 3),
(20, 5, 20, 4);

That took 0.02 seconds
################################################## 

Running migration 36:
-- Model: Answer
ALTER TABLE `questions_answer`
    ADD `page` integer default 1;

-- Set page numbers for existing answers.
UPDATE questions_answer a
SET
    page = (
        SELECT COUNT(*)
        FROM (
            SELECT id, question_id, created
            FROM questions_answer) b
        WHERE b.question_id = a.question_id AND b.created < a.created
        ) / 20 + 1;

That took 121.25 seconds
##################################################
Push complete.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Mary noticed and I filed bug 602134; we'll fix that tomorrow.
Filed bug 602135 to push the fix to bug 602134.
Verified FIXED -- pushed and followup bugs filed (checked a number of SUMO 2.2.5 bugs, too, including the security fixes).
Status: RESOLVED → VERIFIED
Component: Server Operations: Web Operations → WebOps: Other
Product: mozilla.org → Infrastructure & Operations
Product: Infrastructure & Operations → Infrastructure & Operations Graveyard
You need to log in before you can comment on or make changes to this bug.