[Openstack] Possibility to have non python sub project in openstack
    Hengqing Hu 
    hudayou at hotmail.com
       
    Wed Jul 25 03:36:47 UTC 2012
    
    
  
Hi,
These days I was working on a nova-scheduler translated to erlang(update 
database, rpc messaging all in erlang).
Currently it can responds to the following commands the same as the 
nova-scheduler in python:
euca-run-instances -n N -t m1.tiny ami-00000003
euca-run-instances -t m1.tiny ami-00000003
It is still a work in progress and code need to be beautified, functions
needs to be completed, bugs need to be fixed.
Since what I see openstack now is a complete python stack, What I like 
to know is:
Is it possible to have a non python sub project in openstack?
How to make a non python project a sub project of openstack?
Will mixed language projects in openstack be helpfull or messfull?
Best Regards, Hengqing Hu
Attached some code snippet to show some of the ideas:
-module(compute_filter).
%% api
-export([host_passes/2]).
%%%-------------------------------------------------------------------
%%% api
%%%-------------------------------------------------------------------
host_passes({_, State}, FilterProperties) ->
     InstanceType = proplists:get_value(<<"instance_type">>,
                                        FilterProperties),
     Topic = proplists:get_value(<<"topic">>,
                                 State),
     ((Topic =/= <<"compute">>) or
      (InstanceType =:= undefined) or
      (InstanceType =:= null)) orelse
     begin
         Capabilities = proplists:get_value(<<"capabilities">>,
                                            State),
         Service = proplists:get_value(<<"service">>,
                                       State),
         CapabilitiesEnabled = proplists:get_value(<<"enabled">>,
                                                   Capabilities,
                                                   1),
         is_service_up(Service) and
         is_capabilities_enabled(CapabilitiesEnabled) and
         satisfies_extra_specs(Capabilities, InstanceType)
     end.
%%%-------------------------------------------------------------------
%%% internal functions
%%%-------------------------------------------------------------------
is_service_up(Service) ->
     Disabled = proplists:get_value(<<"disabled">>,
                                    Service),
     is_service_enabled(Disabled) and
     ensched_lib:service_is_up(Service).
is_capabilities_enabled(1) ->
    true;
is_capabilities_enabled(0) ->
    false.
is_service_enabled(1) ->
     false;
is_service_enabled(0) ->
     true.
satisfies_extra_specs(Capabilities, InstanceType) ->
     (not lists:keymember(<<"extra_specs">>, 1, InstanceType)) orelse
     begin
         ExtraSpecs = proplists:get_value(<<"extra_specs">>, InstanceType),
         lists:all(
             fun({Key, Value})->
                     Value =:= proplists:get_value(Key, Capabilities)
             end,
             ExtraSpecs)
     end.
    
    
More information about the Openstack
mailing list