conductor, condor and ssh keys
by Jan Provazník
As condor matching process (when starting an instance) was moved to
conductor we can simplify instance SSH key generation for EC2 accounts.
SSH keys are always associated with an EC2 account. A user generates SSH
key pair for the account and gets back ID for this key pair. Then when
the user starts an instance he passes ID of the key pair generated before.
With matching in condor we didn't know where an instance will be started
(which provider/provider account will condor choose) so we didn't know
for which provider account new unique key pair should be generated. So
we had to use a default key for starting the instance and replace the
default key with new unique key when instance was started.
Now as matching is done on conductor side we know which provider account
will be used so we can simply generate unique SSH key pair for the new
instance before before a launch request is passed to condor. Then we can
remove instance observer and delayed_job and ssh key replacement logic.
This change is quite simple, should we do this in this sprint?
And one more question: all what condor does is running async deltacloud
API requests. Any reason why not replace whole condor with some other
more ruby friendly solution? There is a bunch of nice projects for
running async tasks in ruby.
Jan
12 years, 10 months
Setting limits - please respond with your component limit factors
by Steven Dake
It would be helpful to have a debate about the limits we intend to
support with aeolus atleast from an engineering perspective. This
allows us to communicate with our user community and helps fedora test
days get some idea of what they should be trying to exercise or might
find out of scope.
The first step is identifying the limiting factors. The second step is
associating a number with them and what contributes to that limit. This
info provides developers with a ballpark number to shoot for
implementation wise. Once we have this info, we can put it on the
Aeolus website for all to see :)
Let us focus on creating a list of limiting factors first.
I'll start off with some limiting factors I find interesting for my work:
1. Limit of deployables in the system
2. Limit of assemblies in the system
3. Limit of images in the system
4. Limit of assemblies in a deployable
5. Limit of resources in an assembly
I know there are many other limiting factors.
Please help contribute your list of limiting factors to this list.
Thanks
-steve
12 years, 10 months
Fix some feedback from aeolus-image
by Jason Guiditta
[PATCH aeolus-image 1/2] BZ #714276: aeolus-image list --builds
[PATCH aeolus-image 2/2] BZ #715103 aeolus-image push w/ build id
This patchset gives the user better feedback on some options/commands that
are not yet implemented.
12 years, 10 months
An explanation of resources as it relates to aeolus
by Steven Dake
A resource is a a monitored application within a deployable/assembly
(such as httpd or smartd or mysql, or etc). A resource datablob
contains information about how to monitor the application and what to do
with the application once a failure is detected or escalated.
1. What does the xml blob look like?
------------------------------------
Look at an example of apache web server and smartd:
<ha uuid="UUIDONE">
<resources>
<resource name="apache_webservice" type="apache" class="ocf"
monitor_interval="60s">
<escalation restarts="5" window="600s" policy="restart-assembly"/>
</resource>
<resource name="smartd_servicee" type="smartd" class="ocf"
monitor_interval="60s">
<escalation restarts="3" window="200s" policy="restart-deployable"/>
</resource>
</resources>
</ha>
2. What does this tell pacemaker cloud to do?
----------------------------------------------
- terminate and restart apache if failure is detected by matahari
- terminate and restart smartd f failure is detected by matahari
- If 5 apache recoveries occur within the trailing 600 seconds
terminate and restart the assembly
- If 3 smartd recoveries occur within the trailing 200 seconds
terminate and restart the deployable
3. What would the conductor deployable.xml data blob look like?
---------------------------------------------------------------
<deployable name="Redmine">
+description>Redmine is a web-based project management
application</description>
<ha uuid="UUIDZERO"/>
<assemblies>
<assembly name="web" hwp="hwp1">
<image id="4fc38a0d-1383-4e1d-bc43-850e42541bc0">
+</image>
+<ha uuid="UUIDONE"/>
/assembly>
<assembly name="database" hwp="hwp1">
<image id="4fc38a0d-1383-4e1d-bc43-850e42541bc0"
build="bb7f6e3e-90cc-4072-afd0-030af99de555">
</image>
+<ha uuid="UUIDTWO"/>
</assembly>
</assemblies>
</deployable>
Point 3 is open for debate but seems to make the most sense to me. This
allows us to create resource templates in a cli/gui and store them via
some (as yet undefined) storage system. pacemaker-cloud would query
this storage system on assembly startup to determine the correct data to
apply to the assembly.
Tips appreciated on where this data should be stored.
Regards
-steve
12 years, 10 months
[PATCH aeolus] Swallow disconnect error in aeolus-image
by Martyn Taylor
From: Martyn Taylor <mtaylor(a)redhat.com>
---
.../lib/image_factory/image_factory_console.rb | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/services/image_factory/console/lib/image_factory/image_factory_console.rb b/services/image_factory/console/lib/image_factory/image_factory_console.rb
index ed22a9b..c1cfb7d 100644
--- a/services/image_factory/console/lib/image_factory/image_factory_console.rb
+++ b/services/image_factory/console/lib/image_factory/image_factory_console.rb
@@ -211,7 +211,16 @@ class ImageFactoryConsole < Qmf2::ConsoleHandler
@session.close
end
@connection.close
- self.cancel
+
+ #TODO Replace this with some control flow to manage the cancelling of the console handler, atm
+ # this code swallows error message generated by closing connection, then cancelling console.
+ begin
+ self.cancel
+ rescue QmfError
+ # TODO We should be logging to a file rather than STDOUT, uncomment this code when logging is configured properly
+ # Commented out to clean up user output
+ #(a)logger.error "Issue Closing Console Handler"
+ end
end
private
--
1.7.4
12 years, 10 months
[PATCH] Added sample deployable xml file
by Scott Seago
Signed-off-by: Scott Seago <sseago(a)redhat.com>
---
examples/sample-deployable.xml | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
create mode 100644 examples/sample-deployable.xml
diff --git a/examples/sample-deployable.xml b/examples/sample-deployable.xml
new file mode 100644
index 0000000..eef16b5
--- /dev/null
+++ b/examples/sample-deployable.xml
@@ -0,0 +1,14 @@
+<deployable name="Redmine">
+<description>Redmine is a web-based project management
+application</description>
+<assemblies>
+<assembly name="web" hwp="hwp1">
+<image id="4fc38a0d-1383-4e1d-bc43-850e42541bc0">
+</image>
+</assembly>
+<assembly name="database" hwp="hwp1">
+<image id="4fc38a0d-1383-4e1d-bc43-850e42541bc0" build="bb7f6e3e-90cc-4072-afd0-030af99de555">
+</image>
+</assembly>
+</assemblies>
+</deployable>
--
1.7.4.4
12 years, 10 months
[PATCH conductor] Correct the semantics of warning flash messages
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=714787
Some messages (i.e. "Failed to connect to Provider") used flash[:notice],
which didn't convey the correct meaning in the UI.
These messages were changed to flash[:warning].
---
.../controllers/provider_accounts_controller.rb | 2 +-
src/app/controllers/providers_controller.rb | 10 +++++-----
src/app/controllers/quotas_controller.rb | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb
index 710f5d4..9fea8eb 100644
--- a/src/app/controllers/provider_accounts_controller.rb
+++ b/src/app/controllers/provider_accounts_controller.rb
@@ -126,7 +126,7 @@ class ProviderAccountsController < ApplicationController
def multi_destroy
if params[:accounts_selected].blank?
- flash[:notice] = "You must select some accounts first."
+ flash[:warning] = "You must select some accounts first."
redirect_to provider_accounts_url and return
end
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb
index 7364389..f00b926 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -71,7 +71,7 @@ class ProvidersController < ApplicationController
end
@provider = Provider.new(params[:provider])
if !(a)provider.connect
- flash[:notice] = "Failed to connect to Provider"
+ flash[:warning] = "Failed to connect to Provider"
render :action => "new"
else
if @provider.save && @provider.populate_hardware_profiles
@@ -79,7 +79,7 @@ class ProvidersController < ApplicationController
flash[:notice] = "Provider added."
redirect_to providers_path
else
- flash[:notice] = "Cannot add the provider."
+ flash[:warning] = "Cannot add the provider."
render :action => "new"
end
end
@@ -90,14 +90,14 @@ class ProvidersController < ApplicationController
require_privilege(Privilege::MODIFY, @provider)
@provider.update_attributes(params[:provider])
if !(a)provider.connect
- flash[:notice] = "Failed to connect to Provider"
+ flash[:warning] = "Failed to connect to Provider"
render :action => "edit"
else
if @provider.errors.empty? and @provider.save
flash[:notice] = "Provider updated."
redirect_to providers_path
else
- flash[:notice] = "Cannot update the provider."
+ flash[:warning] = "Cannot update the provider."
render :action => 'edit'
end
end
@@ -140,7 +140,7 @@ class ProvidersController < ApplicationController
if @provider.connect
flash[:notice] = "Successfuly Connected to Provider"
else
- flash[:notice] = "Failed to Connect to Provider"
+ flash[:warning] = "Failed to Connect to Provider"
@provider.errors.add :url
end
end
diff --git a/src/app/controllers/quotas_controller.rb b/src/app/controllers/quotas_controller.rb
index 0beb386..dc014ee 100644
--- a/src/app/controllers/quotas_controller.rb
+++ b/src/app/controllers/quotas_controller.rb
@@ -52,7 +52,7 @@ class QuotasController < ApplicationController
flash[:notice] = "Quota updated!"
redirect_to :action => 'show', :id => @parent, :parent_type => @parent_type
else
- flash[:notice] = "Could not update quota, please check you have entered valid values"
+ flash[:warning] = "Could not update quota, please check you have entered valid values"
render :action => "edit"
end
end
--
1.7.4.4
12 years, 10 months
[PATCH imagefactory] Fixed typos in builders/FedoraBuilder.py
by Francesco Vollero
From: Francesco Vollero <fvollero(a)redhat.com>
---
imagefactory/builders/FedoraBuilder.py | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/imagefactory/builders/FedoraBuilder.py b/imagefactory/builders/FedoraBuilder.py
index 0f68582..de917d3 100644
--- a/imagefactory/builders/FedoraBuilder.py
+++ b/imagefactory/builders/FedoraBuilder.py
@@ -650,7 +650,7 @@ class FedoraBuilder(BaseBuilder):
if ami_id == "none":
self.status="FAILED"
- raise ImageFactoryException("No available JEOS for desired OS, verison combination")
+ raise ImageFactoryException("No available JEOS for desired OS, version combination")
instance_type='m1.large'
if self.tdlobj.arch == "i386":
@@ -886,7 +886,7 @@ class FedoraBuilder(BaseBuilder):
try:
provider_data = local_vmware[provider]
except KeyError:
- raise ImageFactoryException("VMWare instance (%s) not found in local configuraiton file /etc/vmware.json" % (provider))
+ raise ImageFactoryException("VMWare instance (%s) not found in local configuration file /etc/vmware.json" % (provider))
self.generic_decode_credentials(credentials, provider_data)
@@ -922,7 +922,7 @@ class FedoraBuilder(BaseBuilder):
try:
post_data = local_rhevm[provider]
except KeyError:
- raise ImageFactoryException("RHEV-M instance (%s) not found in local configuraiton file /etc/rhevm.json" % (provider))
+ raise ImageFactoryException("RHEV-M instance (%s) not found in local configuration file /etc/rhevm.json" % (provider))
self.generic_decode_credentials(credentials, post_data)
--
1.7.4.4
12 years, 10 months
[PATCH configure] Reduce confusion by substituting solr for rake in reported status.
by Richard Su
---
recipes/aeolus/files/solr.init | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/recipes/aeolus/files/solr.init b/recipes/aeolus/files/solr.init
index f6bdb3c..e222cb8 100644
--- a/recipes/aeolus/files/solr.init
+++ b/recipes/aeolus/files/solr.init
@@ -62,8 +62,10 @@ case "$1" in
restart
;;
status)
- status -p $PIDFILE $PROG
+ STATUS_STRING=`status -p $PIDFILE $PROG`
RETVAL=$?
+ STATUS_STRING=${STATUS_STRING/rake/solr}
+ echo $STATUS_STRING
;;
*)
echo "Usage: solr {start|stop|restart|status}"
--
1.7.4.4
12 years, 10 months