Aeolus Presentations
by Justin Clift
As per earlier email around Community Building Plan, let's
figure out where we should Aeolus Presentations, and how
we're going to do it.
The top Etherpad page for assembling info:
http://etherpad-aeolusproject.rhcloud.com/p/Community_Planning
As initial thinking for presentations, this should include:
* Conferences
* Meetups (ie Amazon AWS ones)
* online Aeolus demo's
* <What else?>
Creating presentation materials
*******************************
Mo suggested we create polished presentation materials anyone
in our Community can use. There are existing (not polished?)
presentations around we could start from.
We need volunteers for the creation and polishing of these
presentation materials. Anyone interested? :)
Location, Location, Location
*****************************
We need to figure out the right places to present at. Which
conferences, Meetups, and so on.
So, we'll need to assemble the list of potential places
(there are lots) and go from there.
Some kind people in Red Hat passed us two extensive lists
of potential conferences a while back, though it's a bit
dated. The lists need to be merged, updated for 2012-2013,
and we can go from there.
It'll be a tedious cut-n-paste job, with a lot of looking
up stuff on the Net. (ie "what's the 2012 dates for this
conference? When does the call for papers open, and
close?"
Anyone up for this kind of thing?
Piggybacking
************
We may also be able to piggyback onto conferences other
projects are attending. ie:
* GlusterFS
* OpenStack
* JBoss
* oVirt
We'll have to investigate the schedules for the above (ie oVirt
workshops), and figure it out from there.
Any volunteers here? :)
Presenters
**********
As Aeolus users could be anywhere on the planet, we better
have suitable people in the major areas.
Initial list of potential people. (cut-n-pasted from an older
list)
* Australia
* Dan Macpherson (Brisbane)
* Possibly Mark Meierjohann, CC'd, (Red Hat Solution
Architect) in Melb
* Justin Clift (at a stretch, TZ is unpredictable :/)
* China
* Osier Yang (libvirt team) indicated general
interest a while back, but isn't familiar
with Aeolus at this point. Would need to be clued
in first. ;)
* EU
* Francesco Vollero, Michal Fojtik, Tomas Sedovic (with some work?)
* Definitely for technical audiences, unknown for business ones
* Marios Andreou, in Cyprus
* He's more Deltacloud, but that's still useful. :)
* North America
* US East
* Mo Morsi for technical audience, general business audience
* Chris Alfonso for technical and business audience
* US West
* David Lutterkort (Deltacloud)
* Online demo's
* Dan Macpherson is keen to help here
* Alexandra Settle has experience with screencasts
* Likely other people too. :)
Who else would like to be on the Presenters list in some form?
Regards and best wishes,
Justin Clift
--
Aeolus Community Manager
http://www.aeolusproject.org
11 years, 9 months
Aha... found it :)
by Justin Clift
Hi Steve,
When you get a chance, would you be ok to push the F16
rubygem-aeolus-image and rubygem-aeolus-cli packages to stable?
Turns out they're required for 0.10.x and 0.11.x. ;)
The older 0.3.0 ones still in F16 stable cause weird errors to
turn up in Conductor:
"undefined method `find_active_build_by_imageid' for #"
When trying to build images. ;>
"undefined method 'architecture'" (or similar wording)
When trying to list images.
Those errors are what faked me out when first testing the
0.10.5 rpms. Live and learn. ;)
+ Justin
--
Aeolus Community Manager
http://www.aeolusproject.org
11 years, 9 months
‘stateful’ object styles & codepen.io
by Andy Fitzsimon
Hi folks,
I wanted to send through this idea for generic block styles for stateful components. http://codepen.io/andyfitz/pen/states/
The idea is that without showing any extra chrome, icons or text. we can give a friendly nod to the current state of any given object (normal, paused, stopped & error).
The error state can stack on top of any of the first three states too.
This might help us keep our views related to their primary task without having to force our users to another screen just to inspect the condition of their components.
State-related tasks can be hidden until hover but show on first load of any view (yes hover won't work on a phone but the idea is to only use these as periphery shortcuts for object functionality that exists elsewhere.. i'm working on adding horizontal swipe to reveal the shortcuts for phones)
I also wanted to tell you about codepen.io - it's kindof like JSFiddle mixed with dribbble but with SASS/SCSS & coffeescript support and other nice things like saving as a fully-working github gist. I'm in love.
As you can see in the demo I threw up, the scss and haml are already writen and ready to take as is. I'll be using codepen to play with more ideas before merging them into converge-ui-example or sending them to everyone. Now we don't have to worry about my colour choices — we can change $tones; in the sass to match out palette ;-)
Andy
11 years, 9 months
Re: [PATCH conductor 2/2] 838726 (2) - restrict what deployments can be stopped/removed
by Hugh O. Brock
(for the record, I realize all the worrying about packaging is mostly my fault. I apologize for the inconvenience :-))
-hugh
-------- Original Message --------
From: Hugh Brock <hbrock(a)redhat.com>
Sent: Sat, 14/07/2012 09:17 AM
To: Jan Provazník <jprovazn(a)redhat.com>; Imre Farkas <ifarkas(a)redhat.com>
CC: aeolus-devel(a)lists.fedorahosted.org
Subject: Re: [PATCH conductor 2/2] 838726 (2) - restrict what deployments can be stopped/removed
Jan, let's stop letting the packaging tail wag the software dog. If we need to use a gem, let's use it and figure out how to deal with the packaging later.
-hugh
-------- Original Message --------
From: Jan Provazník <jprovazn(a)redhat.com>
Sent: Fri, 13/07/2012 11:00 AM
To: Imre Farkas <ifarkas(a)redhat.com>
CC: aeolus-devel(a)lists.fedorahosted.org
Subject: Re: [PATCH conductor 2/2] 838726 (2) - restrict what deployments can be stopped/removed
On 07/13/2012 12:01 PM, Imre Farkas wrote:
> On 07/12/2012 08:45 PM, jprovazn(a)redhat.com wrote:
>> From: Jan Provaznik <jprovazn(a)redhat.com>
>>
>> Only running deployemnts can be stopped and only deployments
>> with destroyable or running instances can be destroyed. This
>> patch makes sure that deployemnt doesn't transit from new/pending state
>> directly to shutting down state.
>> ---
>> src/app/controllers/deployments_controller.rb | 5 +++++
>> src/app/controllers/instances_controller.rb | 2 +-
>> src/app/models/deployment.rb | 22
>> ++++++---------------
>> src/app/models/instance.rb | 16
>> +++++++++++++++
>> src/config/locales/en.yml | 1 +
>> src/features/deployment.feature | 10 ++++++++++
>> src/features/step_definitions/deployment_steps.rb | 4 ++++
>> 7 files changed, 43 insertions(+), 17 deletions(-)
>>
>> diff --git a/src/app/controllers/deployments_controller.rb
>> b/src/app/controllers/deployments_controller.rb
>> index 6dc2c70..99cee49 100644
>> --- a/src/app/controllers/deployments_controller.rb
>> +++ b/src/app/controllers/deployments_controller.rb
>> @@ -311,6 +311,11 @@ class DeploymentsController < ApplicationController
>>
>> @deployments_to_stop.each do |deployment|
>> # TODO: move all this logic to model
>> + unless deployment.can_stop?
>> + errors << t('deployments.flash.error.cant_stop',
>> + :name => deployment.name)
>> + next
>> + end
>> deployment.state = Deployment::STATE_SHUTTING_DOWN
>> deployment.save!
>> deployment.instances.each do |instance|
>> diff --git a/src/app/controllers/instances_controller.rb
>> b/src/app/controllers/instances_controller.rb
>> index 121e7d2..f34a58e 100644
>> --- a/src/app/controllers/instances_controller.rb
>> +++ b/src/app/controllers/instances_controller.rb
>> @@ -152,7 +152,7 @@ class InstancesController < ApplicationController
>> notices << "#{instance.name}:
>> #{t('instances.flash.notice.stop')}"
>> end
>> rescue Exception => err
>> - errors << "#{instance.name}: " + err
>> + errors << "#{instance.name}: " + err.message
>> logger.error err.message
>> logger.error err.backtrace.join("\n ")
>> end
>> diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
>> index 3b4e9c1..be60802 100644
>> --- a/src/app/models/deployment.rb
>> +++ b/src/app/models/deployment.rb
>> @@ -160,6 +160,10 @@ class Deployment < ActiveRecord::Base
>> instances.all? {|i| i.destroyable? }
>> end
>>
>> + def can_stop?
>> + [STATE_RUNNING, STATE_INCOMPLETE].include?(self.state)
>> + end
>> +
>> def stop_instances_and_destroy!
>> if destroyable?
>> destroy_deployment_config
>> @@ -167,9 +171,8 @@ class Deployment < ActiveRecord::Base
>> return
>> end
>>
>> - self.state = Deployment::STATE_SHUTTING_DOWN
>> - save!
>> if instances.all? {|i| i.destroyable? or i.state ==
>> Instance::STATE_RUNNING}
>> + self.state = Deployment::STATE_SHUTTING_DOWN
>> destroy_deployment_config
>> # The deployment will be destroyed from an InstanceObserver
>> callback once
>> # all instances are stopped.
>> @@ -700,20 +703,7 @@ class Deployment < ActiveRecord::Base
>> def send_rollback_requests
>> error_occured = false
>> instances.running.each do |instance|
>> - begin
>> - instance.stop(nil)
>> - rescue
>> - error_occured = true
>> - self.events << Event.create(
>> - :source => instance,
>> - :event_time => DateTime.now,
>> - :status_code => 'instance_stop_failed',
>> - :summary => "Failed to stop instance #{instance.name}",
>> - :description => $!.message
>> - )
>> - logger.error $!.message
>> - logger.error $!.backtrace.join("\n ")
>> - end
>> + error_occured = true unless instance.stop_with_event(nil)
>> end
>> if error_occured
>> cleanup_failed_launch
>> diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
>> index 8b8021e..fad0d03 100644
>> --- a/src/app/models/instance.rb
>> +++ b/src/app/models/instance.rb
>> @@ -447,6 +447,22 @@ class Instance < ActiveRecord::Base
>> do_operation(user, 'stop')
>> end
>>
>> + def stop_with_event(user)
>> + stop(user)
>> + true
>> + rescue
>> + self.events << Event.create(
>> + :source => self,
>> + :event_time => DateTime.now,
>> + :status_code => 'instance_stop_failed',
>> + :summary => "Failed to stop instance #{self.name}",
>> + :description => $!.message
>> + )
>> + logger.error $!.message
>> + logger.error $!.backtrace.join("\n ")
>> + false
>> + end
>> +
>> def reboot(user)
>> do_operation(user, 'reboot')
>> end
>> diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
>> index 9295373..519d4c6 100644
>> --- a/src/config/locales/en.yml
>> +++ b/src/config/locales/en.yml
>> @@ -390,6 +390,7 @@ en:
>> one: "The deployment %{list} could not be updated."
>> other: "The deployments %{list} could not be updated."
>> no_hwp_permission: "You do not have sufficient permission to
>> access the %{hwp} hardware profile."
>> + cant_stop: "The deployment %{name} could not be stopped -
>> only running deployments can be stopped."
>> success:
>> deleted:
>> one: "The deployment %{list} was scheduled for deletion."
>> diff --git a/src/features/deployment.feature
>> b/src/features/deployment.feature
>> index a5ebf73..15e54c5 100644
>> --- a/src/features/deployment.feature
>> +++ b/src/features/deployment.feature
>> @@ -82,8 +82,18 @@ Feature: Manage Deployments
>> And I press "stop_button"
>> Then I should see "testdeployment"
>>
>> + Scenario: Stop pending deployment
>> + Given there is a deployment named "testdeployment" belonging to
>> "testdeployable" owned by "testuser"
>> + And deployment "testdeployment" is "pending"
>> + When I go to the deployments page
>> + Then I should see "testdeployment"
>> + When I check "testdeployment" deployment
>> + And I press "stop_button"
>> + Then I should see "deployment testdeployment could not be stopped"
>> +
>> Scenario: Stop inaccessible deployments
>> Given there is a deployment named "testdeployment" belonging to
>> "testdeployable" owned by "testuser"
>> + And deployment "testdeployment" is "incomplete"
>> And "testdeployment" deployment's provider is not accessible
>> When I go to the deployments page
>> Then I should see "testdeployment"
>> diff --git a/src/features/step_definitions/deployment_steps.rb
>> b/src/features/step_definitions/deployment_steps.rb
>> index 4ebab17..d9e80bc 100644
>> --- a/src/features/step_definitions/deployment_steps.rb
>> +++ b/src/features/step_definitions/deployment_steps.rb
>> @@ -38,6 +38,10 @@ Given /^the deployment "([^"]*)" has an instance
>> named "([^"]*)"$/ do |d_name, i
>> deployment.instances << FactoryGirl.create(:instance, :name =>
>> i_name, :pool => deployment.pool)
>> end
>>
>> +Given /^deployment "([^"]*)" is "([^"]*)"$/ do |arg1, arg2|
>> + Deployment.find_by_name(arg1).update_attribute(:state, arg2)
>> +end
>> +
>> Given /^"([^"]*)" deployment's provider is not accessible$/ do |arg1|
>> # FIXME: didn't find a way how to create an inaccessible provider
>> # cleanly
>>
>
> ACK to the patchset
>
Hi, thanks for the review, patchset is pushed.
> Just one question not related to this issue: Managing states,
> transitions and related things seem to be quite messy by now, have we
> ever considered using a state machine library like e.g. aasm?
IIRC there was some discussion about using http://ruote.rubyforge.org/
(which is not exactly state machine). This tool seemed to be too big hammer.
My initial thought was that our transition model is simple enough to be
handled by a few methods in model. I thought that current code is still
quite clear, but this my impression might be very subjective since I'm
familiar with it. Transition model will probably become more complicated
with upcoming approval/delayed workflow, so it might be good idea to
switch to state machine.
The aasm lib looks interesting (it would have to be packaged for Fedora
of course), there is also already packaged state_machine. I'll try to
look at it closer, but if anyone has free cycles, help would be welcome.
Jan
11 years, 9 months
Re: [PATCH conductor 2/2] 838726 (2) - restrict what deployments can be stopped/removed
by Hugh O. Brock
Jan, let's stop letting the packaging tail wag the software dog. If we need to use a gem, let's use it and figure out how to deal with the packaging later.
-hugh
-------- Original Message --------
From: Jan Provazník <jprovazn(a)redhat.com>
Sent: Fri, 13/07/2012 11:00 AM
To: Imre Farkas <ifarkas(a)redhat.com>
CC: aeolus-devel(a)lists.fedorahosted.org
Subject: Re: [PATCH conductor 2/2] 838726 (2) - restrict what deployments can be stopped/removed
On 07/13/2012 12:01 PM, Imre Farkas wrote:
> On 07/12/2012 08:45 PM, jprovazn(a)redhat.com wrote:
>> From: Jan Provaznik <jprovazn(a)redhat.com>
>>
>> Only running deployemnts can be stopped and only deployments
>> with destroyable or running instances can be destroyed. This
>> patch makes sure that deployemnt doesn't transit from new/pending state
>> directly to shutting down state.
>> ---
>> src/app/controllers/deployments_controller.rb | 5 +++++
>> src/app/controllers/instances_controller.rb | 2 +-
>> src/app/models/deployment.rb | 22
>> ++++++---------------
>> src/app/models/instance.rb | 16
>> +++++++++++++++
>> src/config/locales/en.yml | 1 +
>> src/features/deployment.feature | 10 ++++++++++
>> src/features/step_definitions/deployment_steps.rb | 4 ++++
>> 7 files changed, 43 insertions(+), 17 deletions(-)
>>
>> diff --git a/src/app/controllers/deployments_controller.rb
>> b/src/app/controllers/deployments_controller.rb
>> index 6dc2c70..99cee49 100644
>> --- a/src/app/controllers/deployments_controller.rb
>> +++ b/src/app/controllers/deployments_controller.rb
>> @@ -311,6 +311,11 @@ class DeploymentsController < ApplicationController
>>
>> @deployments_to_stop.each do |deployment|
>> # TODO: move all this logic to model
>> + unless deployment.can_stop?
>> + errors << t('deployments.flash.error.cant_stop',
>> + :name => deployment.name)
>> + next
>> + end
>> deployment.state = Deployment::STATE_SHUTTING_DOWN
>> deployment.save!
>> deployment.instances.each do |instance|
>> diff --git a/src/app/controllers/instances_controller.rb
>> b/src/app/controllers/instances_controller.rb
>> index 121e7d2..f34a58e 100644
>> --- a/src/app/controllers/instances_controller.rb
>> +++ b/src/app/controllers/instances_controller.rb
>> @@ -152,7 +152,7 @@ class InstancesController < ApplicationController
>> notices << "#{instance.name}:
>> #{t('instances.flash.notice.stop')}"
>> end
>> rescue Exception => err
>> - errors << "#{instance.name}: " + err
>> + errors << "#{instance.name}: " + err.message
>> logger.error err.message
>> logger.error err.backtrace.join("\n ")
>> end
>> diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
>> index 3b4e9c1..be60802 100644
>> --- a/src/app/models/deployment.rb
>> +++ b/src/app/models/deployment.rb
>> @@ -160,6 +160,10 @@ class Deployment < ActiveRecord::Base
>> instances.all? {|i| i.destroyable? }
>> end
>>
>> + def can_stop?
>> + [STATE_RUNNING, STATE_INCOMPLETE].include?(self.state)
>> + end
>> +
>> def stop_instances_and_destroy!
>> if destroyable?
>> destroy_deployment_config
>> @@ -167,9 +171,8 @@ class Deployment < ActiveRecord::Base
>> return
>> end
>>
>> - self.state = Deployment::STATE_SHUTTING_DOWN
>> - save!
>> if instances.all? {|i| i.destroyable? or i.state ==
>> Instance::STATE_RUNNING}
>> + self.state = Deployment::STATE_SHUTTING_DOWN
>> destroy_deployment_config
>> # The deployment will be destroyed from an InstanceObserver
>> callback once
>> # all instances are stopped.
>> @@ -700,20 +703,7 @@ class Deployment < ActiveRecord::Base
>> def send_rollback_requests
>> error_occured = false
>> instances.running.each do |instance|
>> - begin
>> - instance.stop(nil)
>> - rescue
>> - error_occured = true
>> - self.events << Event.create(
>> - :source => instance,
>> - :event_time => DateTime.now,
>> - :status_code => 'instance_stop_failed',
>> - :summary => "Failed to stop instance #{instance.name}",
>> - :description => $!.message
>> - )
>> - logger.error $!.message
>> - logger.error $!.backtrace.join("\n ")
>> - end
>> + error_occured = true unless instance.stop_with_event(nil)
>> end
>> if error_occured
>> cleanup_failed_launch
>> diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
>> index 8b8021e..fad0d03 100644
>> --- a/src/app/models/instance.rb
>> +++ b/src/app/models/instance.rb
>> @@ -447,6 +447,22 @@ class Instance < ActiveRecord::Base
>> do_operation(user, 'stop')
>> end
>>
>> + def stop_with_event(user)
>> + stop(user)
>> + true
>> + rescue
>> + self.events << Event.create(
>> + :source => self,
>> + :event_time => DateTime.now,
>> + :status_code => 'instance_stop_failed',
>> + :summary => "Failed to stop instance #{self.name}",
>> + :description => $!.message
>> + )
>> + logger.error $!.message
>> + logger.error $!.backtrace.join("\n ")
>> + false
>> + end
>> +
>> def reboot(user)
>> do_operation(user, 'reboot')
>> end
>> diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
>> index 9295373..519d4c6 100644
>> --- a/src/config/locales/en.yml
>> +++ b/src/config/locales/en.yml
>> @@ -390,6 +390,7 @@ en:
>> one: "The deployment %{list} could not be updated."
>> other: "The deployments %{list} could not be updated."
>> no_hwp_permission: "You do not have sufficient permission to
>> access the %{hwp} hardware profile."
>> + cant_stop: "The deployment %{name} could not be stopped -
>> only running deployments can be stopped."
>> success:
>> deleted:
>> one: "The deployment %{list} was scheduled for deletion."
>> diff --git a/src/features/deployment.feature
>> b/src/features/deployment.feature
>> index a5ebf73..15e54c5 100644
>> --- a/src/features/deployment.feature
>> +++ b/src/features/deployment.feature
>> @@ -82,8 +82,18 @@ Feature: Manage Deployments
>> And I press "stop_button"
>> Then I should see "testdeployment"
>>
>> + Scenario: Stop pending deployment
>> + Given there is a deployment named "testdeployment" belonging to
>> "testdeployable" owned by "testuser"
>> + And deployment "testdeployment" is "pending"
>> + When I go to the deployments page
>> + Then I should see "testdeployment"
>> + When I check "testdeployment" deployment
>> + And I press "stop_button"
>> + Then I should see "deployment testdeployment could not be stopped"
>> +
>> Scenario: Stop inaccessible deployments
>> Given there is a deployment named "testdeployment" belonging to
>> "testdeployable" owned by "testuser"
>> + And deployment "testdeployment" is "incomplete"
>> And "testdeployment" deployment's provider is not accessible
>> When I go to the deployments page
>> Then I should see "testdeployment"
>> diff --git a/src/features/step_definitions/deployment_steps.rb
>> b/src/features/step_definitions/deployment_steps.rb
>> index 4ebab17..d9e80bc 100644
>> --- a/src/features/step_definitions/deployment_steps.rb
>> +++ b/src/features/step_definitions/deployment_steps.rb
>> @@ -38,6 +38,10 @@ Given /^the deployment "([^"]*)" has an instance
>> named "([^"]*)"$/ do |d_name, i
>> deployment.instances << FactoryGirl.create(:instance, :name =>
>> i_name, :pool => deployment.pool)
>> end
>>
>> +Given /^deployment "([^"]*)" is "([^"]*)"$/ do |arg1, arg2|
>> + Deployment.find_by_name(arg1).update_attribute(:state, arg2)
>> +end
>> +
>> Given /^"([^"]*)" deployment's provider is not accessible$/ do |arg1|
>> # FIXME: didn't find a way how to create an inaccessible provider
>> # cleanly
>>
>
> ACK to the patchset
>
Hi, thanks for the review, patchset is pushed.
> Just one question not related to this issue: Managing states,
> transitions and related things seem to be quite messy by now, have we
> ever considered using a state machine library like e.g. aasm?
IIRC there was some discussion about using http://ruote.rubyforge.org/
(which is not exactly state machine). This tool seemed to be too big hammer.
My initial thought was that our transition model is simple enough to be
handled by a few methods in model. I thought that current code is still
quite clear, but this my impression might be very subjective since I'm
familiar with it. Transition model will probably become more complicated
with upcoming approval/delayed workflow, so it might be good idea to
switch to state machine.
The aasm lib looks interesting (it would have to be packaged for Fedora
of course), there is also already packaged state_machine. I'll try to
look at it closer, but if anyone has free cycles, help would be welcome.
Jan
11 years, 9 months
EC2 reset-to-start script?
by Justin Clift
Out of curiosity, has anyone hacked together a script which
logs into EC2, nuking all running instances, EBS and S3 storage,
security groups, and the like?
Doing it manually, across every region, is pretty tedious. :/
+ Justin
--
Aeolus Community Manager
http://www.aeolusproject.org
11 years, 9 months
2012.7 Sprint EOS schedule
by steve linabery
I would like to propose:
0) Repo freeze on EOD Mon 30-Jul
1) making it a goal to have spec and cuke unit tests passing on conductor master
2) Branching and tagging 0.12.x release on Wed 1-Aug, or when 1) complete, whichever is earlier.
Does any of that strike anyone as controversial?
Thanks,
Steve|eggs
Software Engineer, Red Hat, Inc
11 years, 9 months