2012-02-23 12 views
8

Zajmuję się tworzeniem wtyczki Jenkins w Ruby. Powinieneś móc skonfigurować każdy węzeł, który łączy się z serwerem, aby wiadomość e-mail była wysyłana pod określony adres, gdy węzeł utraci połączenie z serwerem głównym. EmailNodeProperty dodaje pole, aby wprowadzić adres e-mail:Sprawdzanie poprawności formularzy wtyczek Jenkins przy użyciu Ruby

# 
# Save an email property for every node 
# 
class EmailNodeProperty < Jenkins::Slaves::NodeProperty 
    require 'java' 
    import 'hudson.util.FormValidation' 

    display_name "Email notification" 

    attr_accessor :email 

    def initialize(attrs = {}) 
     @email = attrs['email'] 
    end 

    def doCheckEmail value 
     puts " ENP.doCheckEmail:#{value}" 
    end 
end 

Podczas konfigurowania węzła, jest to pole o nazwie email gdzie można wprowadzić adres e-mail. Chcę, aby to pole było sprawdzane po wprowadzeniu adresu.

Po zapisaniu konfiguracji EmailNodeProperty jest tworzony skąd (to prawda) można uzyskać dostęp do adresu e-mail.

MyComputerListener „s offline jest wywoływana gdy węzeł utraci połączenie:

class MyComputerListener 
    include Jenkins::Slaves::ComputerListener 
    include Jenkins::Plugin::Proxy 

    def online(computer, listener) 
    end 

    def offline(computer) 
     #Do nothing when the Master shuts down 
     if computer.to_s.match('Master') == nil 
      list = computer.native.getNode().getNodeProperties() 
      proxy = list.find {"EmailNodeProperty"} 
      if proxy.is_a?(Jenkins::Plugin::Proxy) 
       rubyObject = proxy.getTarget() 
       email = rubyObject.email #<= Accesses the email from EmailNodeProperty 
       [...] 
      end 
     end 
    end 
end 

MyComputerListener wyszukuje adres e-mail i wysyła e-mail.

Czy ktoś wie, czy możliwe jest sprawdzenie poprawności formularza w języku Ruby? Według Jenkins wiki, to co miało być realizowane (pole ma być wymieniony na nazwę pola, więc myślę, że powinno być doCheckEmail):

public FormValidation doCheckFIELD(@QueryParameter String value) { 
    if(looksOk(value)) 
     return FormValidation.ok(); 
    else 
     return FormValidation.error("There's a problem here"); 
} 

Jak byś zrobić to w Ruby? Gdzie powinna być wdrożona ta metoda? W EmailNodeProperty lub w MyComputerListener? Jak radzisz sobie z QueryParameter? @ Spowoduje, że będzie to zmienna typu intstance w Ruby. (Co jest Queryparameter?)

Każda pomoc będzie bardzo mile widziana!

/Jonatan

Odpowiedz