omf_rc 6.0.0.pre.4 → 6.0.0.pre.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/omf_rc +2 -3
 - data/lib/omf_rc/resource_factory.rb +4 -18
 - data/lib/omf_rc/resource_proxy/abstract_resource.rb +28 -31
 - data/lib/omf_rc/resource_proxy_dsl.rb +3 -19
 - data/lib/omf_rc/util/iw.rb +2 -1
 - data/lib/omf_rc/util/mock.rb +0 -6
 - data/lib/omf_rc/util/mod.rb +2 -4
 - data/lib/omf_rc/version.rb +1 -1
 - data/lib/omf_rc.rb +1 -0
 - data/test/fixture/iw/help +228 -0
 - data/test/fixture/iw/link +11 -0
 - data/test/fixture/lsmod +106 -0
 - data/test/mock_helper.rb +15 -0
 - data/test/omf_rc/resource_factory_spec.rb +3 -0
 - data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +5 -3
 - data/test/omf_rc/resource_proxy/node_spec.rb +10 -0
 - data/test/omf_rc/resource_proxy_dsl_spec.rb +1 -5
 - data/test/omf_rc/util/iw_spec.rb +38 -0
 - data/test/omf_rc/util/mod_spec.rb +30 -0
 - data/test/test_helper.rb +0 -2
 - metadata +10 -4
 
    
        data/bin/omf_rc
    CHANGED
    
    | 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require "optparse"
         
     | 
| 
       4 
     | 
    
         
            -
            require 'omf_common'
         
     | 
| 
       5 
4 
     | 
    
         
             
            require 'omf_rc'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'omf_rc/resource_factory'
         
     | 
| 
       7 
6 
     | 
    
         
             
            $stdout.sync = true
         
     | 
| 
         @@ -27,8 +26,8 @@ option_parser = OptionParser.new do |opts| 
     | 
|
| 
       27 
26 
     | 
    
         
             
                options[:server] = server
         
     | 
| 
       28 
27 
     | 
    
         
             
              end
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
              opts.on("- 
     | 
| 
       31 
     | 
    
         
            -
                options[:uid] =  
     | 
| 
      
 29 
     | 
    
         
            +
              opts.on("-t TOPIC", "PubSub topic to create, also becomes the uid of the resource") do |topic|
         
     | 
| 
      
 30 
     | 
    
         
            +
                options[:uid] = topic
         
     | 
| 
       32 
31 
     | 
    
         
             
              end
         
     | 
| 
       33 
32 
     | 
    
         | 
| 
       34 
33 
     | 
    
         
             
              opts.on("-d", "--debug", "Debug mode") do
         
     | 
| 
         @@ -1,4 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'omf_common'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'securerandom'
         
     | 
| 
       3 
2 
     | 
    
         
             
            require 'hashie'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'omf_rc/resource_proxy_dsl'
         
     | 
| 
         @@ -9,13 +8,10 @@ require 'omf_rc/resource_proxy/abstract_resource' 
     | 
|
| 
       9 
8 
     | 
    
         
             
            class OmfRc::ResourceFactory
         
     | 
| 
       10 
9 
     | 
    
         
             
              # List of registered resource proxies
         
     | 
| 
       11 
10 
     | 
    
         
             
              @@proxy_list = []
         
     | 
| 
       12 
     | 
    
         
            -
              # List of registered utilities
         
     | 
| 
       13 
     | 
    
         
            -
              @@utility_list = []
         
     | 
| 
       14 
11 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
              # By default, we use  
     | 
| 
      
 12 
     | 
    
         
            +
              # By default, we use xmpp dsl, which based on blather
         
     | 
| 
       16 
13 
     | 
    
         
             
              DEFAULT_OPTS = {
         
     | 
| 
       17 
     | 
    
         
            -
                dsl: ' 
     | 
| 
       18 
     | 
    
         
            -
                pubsub_host: 'pubsub'
         
     | 
| 
      
 14 
     | 
    
         
            +
                dsl: 'xmpp'
         
     | 
| 
       19 
15 
     | 
    
         
             
              }
         
     | 
| 
       20 
16 
     | 
    
         | 
| 
       21 
17 
     | 
    
         
             
              class << self
         
     | 
| 
         @@ -31,7 +27,7 @@ class OmfRc::ResourceFactory 
     | 
|
| 
       31 
27 
     | 
    
         
             
                  # Create a new instance of abstract resource
         
     | 
| 
       32 
28 
     | 
    
         
             
                  resource = OmfRc::ResourceProxy::AbstractResource.new(type, opts, comm)
         
     | 
| 
       33 
29 
     | 
    
         
             
                  # Then extend this instance with relevant module identified by type
         
     | 
| 
       34 
     | 
    
         
            -
                  resource.extend("OmfRc::ResourceProxy::#{type. 
     | 
| 
      
 30 
     | 
    
         
            +
                  resource.extend("OmfRc::ResourceProxy::#{type.camelize}".constantize)
         
     | 
| 
       35 
31 
     | 
    
         
             
                  # Execute resource before_ready hook if any
         
     | 
| 
       36 
32 
     | 
    
         
             
                  resource.before_ready if resource.respond_to? :before_ready
         
     | 
| 
       37 
33 
     | 
    
         
             
                  resource
         
     | 
| 
         @@ -44,17 +40,7 @@ class OmfRc::ResourceFactory 
     | 
|
| 
       44 
40 
     | 
    
         | 
| 
       45 
41 
     | 
    
         
             
                # Add a proxy to the list
         
     | 
| 
       46 
42 
     | 
    
         
             
                def register_proxy(proxy)
         
     | 
| 
       47 
     | 
    
         
            -
                  @@proxy_list << proxy
         
     | 
| 
       48 
     | 
    
         
            -
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                # Return the utility list
         
     | 
| 
       51 
     | 
    
         
            -
                def utility_list
         
     | 
| 
       52 
     | 
    
         
            -
                  @@utility_list
         
     | 
| 
       53 
     | 
    
         
            -
                end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                # Add a utility to the list
         
     | 
| 
       56 
     | 
    
         
            -
                def register_utility(utility)
         
     | 
| 
       57 
     | 
    
         
            -
                  @@utility_list << utility
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @@proxy_list << proxy unless @@proxy_list.include?(proxy)
         
     | 
| 
       58 
44 
     | 
    
         
             
                end
         
     | 
| 
       59 
45 
     | 
    
         | 
| 
       60 
46 
     | 
    
         
             
                # Require files from default resource proxy library folder
         
     | 
| 
         @@ -1,18 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'omf_common'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'omf_rc/deferred_process'
         
     | 
| 
       3 
2 
     | 
    
         
             
            require 'omf_rc/message_process_error'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'securerandom'
         
     | 
| 
       5 
4 
     | 
    
         
             
            require 'hashie'
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
            class OmfRc::ResourceProxy::AbstractResource
         
     | 
| 
       8 
     | 
    
         
            -
              # Time to wait before shutting down event loop, wait for deleting pubsub  
     | 
| 
      
 7 
     | 
    
         
            +
              # Time to wait before shutting down event loop, wait for deleting pubsub topics
         
     | 
| 
       9 
8 
     | 
    
         
             
              DISCONNECT_WAIT = 5
         
     | 
| 
       10 
     | 
    
         
            -
              # Time to wait before releasing resource, wait for deleting pubsub  
     | 
| 
      
 9 
     | 
    
         
            +
              # Time to wait before releasing resource, wait for deleting pubsub topics
         
     | 
| 
       11 
10 
     | 
    
         
             
              RELEASE_WAIT = 5
         
     | 
| 
       12 
11 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
              # @!attribute  
     | 
| 
      
 12 
     | 
    
         
            +
              # @!attribute property
         
     | 
| 
       14 
13 
     | 
    
         
             
              #   @return [String] the resource's internal meta data storage
         
     | 
| 
       15 
     | 
    
         
            -
              attr_accessor :uid, :hrn, :type, :comm, : 
     | 
| 
      
 14 
     | 
    
         
            +
              attr_accessor :uid, :hrn, :type, :comm, :property
         
     | 
| 
       16 
15 
     | 
    
         
             
              attr_reader :opts, :children, :host
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
17 
     | 
    
         
             
              # Initialisation
         
     | 
| 
         @@ -21,11 +20,11 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       21 
20 
     | 
    
         
             
              # @param [Hash] opts options to be initialised
         
     | 
| 
       22 
21 
     | 
    
         
             
              # @option opts [String] :uid Unique identifier
         
     | 
| 
       23 
22 
     | 
    
         
             
              # @option opts [String] :hrn Human readable name
         
     | 
| 
       24 
     | 
    
         
            -
              # @option opts [String] :pubsub_host pubsub server subdomain, default to 'pubsub'
         
     | 
| 
       25 
23 
     | 
    
         
             
              # @option opts [String] :dsl Which pubsub DSL to be used for pubsub communication
         
     | 
| 
       26 
24 
     | 
    
         
             
              # @option opts [String] :user pubsub user id
         
     | 
| 
       27 
25 
     | 
    
         
             
              # @option opts [String] :password pubsub user password
         
     | 
| 
       28 
26 
     | 
    
         
             
              # @option opts [String] :server pubsub server domain
         
     | 
| 
      
 27 
     | 
    
         
            +
              # @option opts [String] :property A hash for keeping internal state
         
     | 
| 
       29 
28 
     | 
    
         
             
              # @param [Comm] comm communicator instance, pass this to new resource proxy instance if want to use a common communicator instance.
         
     | 
| 
       30 
29 
     | 
    
         
             
              def initialize(type, opts = nil, comm = nil)
         
     | 
| 
       31 
30 
     | 
    
         
             
                @opts = Hashie::Mash.new(opts)
         
     | 
| 
         @@ -34,24 +33,24 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       34 
33 
     | 
    
         
             
                @hrn = @opts.hrn
         
     | 
| 
       35 
34 
     | 
    
         
             
                @children ||= []
         
     | 
| 
       36 
35 
     | 
    
         
             
                @host = nil
         
     | 
| 
       37 
     | 
    
         
            -
                @ 
     | 
| 
      
 36 
     | 
    
         
            +
                @property = @opts.property || Hashie::Mash.new
         
     | 
| 
       38 
37 
     | 
    
         | 
| 
       39 
38 
     | 
    
         
             
                @comm = comm || OmfCommon::Comm.new(@opts.dsl)
         
     | 
| 
       40 
39 
     | 
    
         
             
                # Fire when connection to pubsub server established
         
     | 
| 
       41 
40 
     | 
    
         
             
                @comm.when_ready do
         
     | 
| 
       42 
41 
     | 
    
         
             
                  logger.info "CONNECTED: #{@comm.jid.inspect}"
         
     | 
| 
       43 
     | 
    
         
            -
                  @host =  
     | 
| 
      
 42 
     | 
    
         
            +
                  @host = @comm.jid.domain
         
     | 
| 
       44 
43 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                  # Once connection established, create a pubsub  
     | 
| 
       46 
     | 
    
         
            -
                  @comm. 
     | 
| 
       47 
     | 
    
         
            -
                    # Creating  
     | 
| 
       48 
     | 
    
         
            -
                    # Otherwise go subscribe to this pubsub  
     | 
| 
      
 44 
     | 
    
         
            +
                  # Once connection established, create a pubsub topic, then subscribe to it
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @comm.create_topic(uid, host) do |s|
         
     | 
| 
      
 46 
     | 
    
         
            +
                    # Creating topic failed, no point to continue; clean up and disconnect
         
     | 
| 
      
 47 
     | 
    
         
            +
                    # Otherwise go subscribe to this pubsub topic
         
     | 
| 
       49 
48 
     | 
    
         
             
                    s.error? ? disconnect : @comm.subscribe(uid, host)
         
     | 
| 
       50 
49 
     | 
    
         
             
                  end
         
     | 
| 
       51 
50 
     | 
    
         
             
                end
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
52 
     | 
    
         
             
                # Fire when message published
         
     | 
| 
       54 
     | 
    
         
            -
                @comm. 
     | 
| 
      
 53 
     | 
    
         
            +
                @comm.topic_event do |e|
         
     | 
| 
       55 
54 
     | 
    
         
             
                  e.items.each do |item|
         
     | 
| 
       56 
55 
     | 
    
         
             
                    process_omf_message(item.payload, e.node)
         
     | 
| 
       57 
56 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -68,21 +67,21 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       68 
67 
     | 
    
         
             
                @comm.connect(opts.user, opts.password, opts.server)
         
     | 
| 
       69 
68 
     | 
    
         
             
              end
         
     | 
| 
       70 
69 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
              # Try to clean up pubsub  
     | 
| 
      
 70 
     | 
    
         
            +
              # Try to clean up pubsub topics, and wait for DISCONNECT_WAIT seconds, then shutdown event machine loop
         
     | 
| 
       72 
71 
     | 
    
         
             
              def disconnect
         
     | 
| 
       73 
     | 
    
         
            -
                @comm. 
     | 
| 
       74 
     | 
    
         
            -
                   
     | 
| 
       75 
     | 
    
         
            -
                  if  
     | 
| 
       76 
     | 
    
         
            -
                    logger.info "Cleaning #{ 
     | 
| 
       77 
     | 
    
         
            -
                    a[:owner].each { | 
     | 
| 
      
 72 
     | 
    
         
            +
                @comm.affiliations(host) do |a|
         
     | 
| 
      
 73 
     | 
    
         
            +
                  my_pubsub_topics = a[:owner] ? a[:owner].size : 0
         
     | 
| 
      
 74 
     | 
    
         
            +
                  if my_pubsub_topics > 0
         
     | 
| 
      
 75 
     | 
    
         
            +
                    logger.info "Cleaning #{my_pubsub_topics} pubsub topic(s)"
         
     | 
| 
      
 76 
     | 
    
         
            +
                    a[:owner].each { |topic| @comm.delete_topic(topic, host) }
         
     | 
| 
       78 
77 
     | 
    
         
             
                  else
         
     | 
| 
       79 
78 
     | 
    
         
             
                    logger.info "Disconnecting now"
         
     | 
| 
       80 
     | 
    
         
            -
                    @comm.disconnect 
     | 
| 
      
 79 
     | 
    
         
            +
                    @comm.disconnect
         
     | 
| 
       81 
80 
     | 
    
         
             
                  end
         
     | 
| 
       82 
81 
     | 
    
         
             
                end
         
     | 
| 
       83 
82 
     | 
    
         
             
                logger.info "Disconnecting in #{DISCONNECT_WAIT} seconds"
         
     | 
| 
       84 
83 
     | 
    
         
             
                EM.add_timer(DISCONNECT_WAIT) do
         
     | 
| 
       85 
     | 
    
         
            -
                  @comm.disconnect 
     | 
| 
      
 84 
     | 
    
         
            +
                  @comm.disconnect
         
     | 
| 
       86 
85 
     | 
    
         
             
                end
         
     | 
| 
       87 
86 
     | 
    
         
             
              end
         
     | 
| 
       88 
87 
     | 
    
         | 
| 
         @@ -99,15 +98,13 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       99 
98 
     | 
    
         
             
              # Release a resource
         
     | 
| 
       100 
99 
     | 
    
         
             
              #
         
     | 
| 
       101 
100 
     | 
    
         
             
              def release
         
     | 
| 
       102 
     | 
    
         
            -
                 
     | 
| 
      
 101 
     | 
    
         
            +
                pubsub_topics_left = []
         
     | 
| 
       103 
102 
     | 
    
         
             
                children.each do |c|
         
     | 
| 
       104 
103 
     | 
    
         
             
                  c.before_release if c.respond_to? :before_release
         
     | 
| 
       105 
     | 
    
         
            -
                   
     | 
| 
       106 
     | 
    
         
            -
                  c.freeze
         
     | 
| 
      
 104 
     | 
    
         
            +
                  pubsub_topics_left << c.uid
         
     | 
| 
       107 
105 
     | 
    
         
             
                end.clear
         
     | 
| 
       108 
106 
     | 
    
         
             
                before_release if respond_to? :before_release
         
     | 
| 
       109 
     | 
    
         
            -
                 
     | 
| 
       110 
     | 
    
         
            -
                pubsub_nodes_left
         
     | 
| 
      
 107 
     | 
    
         
            +
                pubsub_topics_left
         
     | 
| 
       111 
108 
     | 
    
         
             
              end
         
     | 
| 
       112 
109 
     | 
    
         | 
| 
       113 
110 
     | 
    
         
             
              # Return a list of all properties can be requested and configured
         
     | 
| 
         @@ -147,7 +144,7 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       147 
144 
     | 
    
         | 
| 
       148 
145 
     | 
    
         
             
              # Parse omf message and execute as instructed by the message
         
     | 
| 
       149 
146 
     | 
    
         
             
              #
         
     | 
| 
       150 
     | 
    
         
            -
              def process_omf_message(pubsub_item_payload,  
     | 
| 
      
 147 
     | 
    
         
            +
              def process_omf_message(pubsub_item_payload, topic)
         
     | 
| 
       151 
148 
     | 
    
         
             
                dp = OmfRc::DeferredProcess.new
         
     | 
| 
       152 
149 
     | 
    
         | 
| 
       153 
150 
     | 
    
         
             
                dp.callback do |end_result|
         
     | 
| 
         @@ -155,7 +152,7 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       155 
152 
     | 
    
         
             
                    case end_result[:operation]
         
     | 
| 
       156 
153 
     | 
    
         
             
                    when :create
         
     | 
| 
       157 
154 
     | 
    
         
             
                      new_uid = end_result[:result]
         
     | 
| 
       158 
     | 
    
         
            -
                      @comm. 
     | 
| 
      
 155 
     | 
    
         
            +
                      @comm.create_topic(new_uid, host) do
         
     | 
| 
       159 
156 
     | 
    
         
             
                        @comm.subscribe(new_uid, host) do
         
     | 
| 
       160 
157 
     | 
    
         
             
                          inform_msg = OmfCommon::Message.inform(end_result[:context_id], 'CREATED') do |i|
         
     | 
| 
       161 
158 
     | 
    
         
             
                            i.element('resource_id', new_uid)
         
     | 
| 
         @@ -185,7 +182,7 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       185 
182 
     | 
    
         
             
                      end
         
     | 
| 
       186 
183 
     | 
    
         | 
| 
       187 
184 
     | 
    
         
             
                      end_result[:result].each do |n|
         
     | 
| 
       188 
     | 
    
         
            -
                        @comm. 
     | 
| 
      
 185 
     | 
    
         
            +
                        @comm.delete_topic(n, host)
         
     | 
| 
       189 
186 
     | 
    
         
             
                      end
         
     | 
| 
       190 
187 
     | 
    
         | 
| 
       191 
188 
     | 
    
         
             
                      EM.add_timer(RELEASE_WAIT) do
         
     | 
| 
         @@ -207,10 +204,10 @@ class OmfRc::ResourceProxy::AbstractResource 
     | 
|
| 
       207 
204 
     | 
    
         
             
                  # Get the context id, which will be included when informing
         
     | 
| 
       208 
205 
     | 
    
         
             
                  context_id = message.read_content("context_id")
         
     | 
| 
       209 
206 
     | 
    
         | 
| 
       210 
     | 
    
         
            -
                  obj =  
     | 
| 
      
 207 
     | 
    
         
            +
                  obj = topic == uid ? self : children.find { |v| v.uid == topic }
         
     | 
| 
       211 
208 
     | 
    
         | 
| 
       212 
209 
     | 
    
         
             
                  begin
         
     | 
| 
       213 
     | 
    
         
            -
                    raise "Resource disappeard #{ 
     | 
| 
      
 210 
     | 
    
         
            +
                    raise "Resource disappeard #{topic}" if obj.nil?
         
     | 
| 
       214 
211 
     | 
    
         | 
| 
       215 
212 
     | 
    
         
             
                    case message.operation
         
     | 
| 
       216 
213 
     | 
    
         
             
                    when :create
         
     | 
| 
         @@ -32,7 +32,7 @@ module OmfRc::ResourceProxyDSL 
     | 
|
| 
       32 
32 
     | 
    
         
             
                #
         
     | 
| 
       33 
33 
     | 
    
         
             
                # Currently the system supports two hooks:
         
     | 
| 
       34 
34 
     | 
    
         
             
                #
         
     | 
| 
       35 
     | 
    
         
            -
                # * before_ready, called when a resource created, before creating an associated pubsub  
     | 
| 
      
 35 
     | 
    
         
            +
                # * before_ready, called when a resource created, before creating an associated pubsub topic
         
     | 
| 
       36 
36 
     | 
    
         
             
                # * before_release, called before a resource released
         
     | 
| 
       37 
37 
     | 
    
         
             
                #
         
     | 
| 
       38 
38 
     | 
    
         
             
                # @param [Symbol] name hook name. :before_create or :before_release
         
     | 
| 
         @@ -75,12 +75,12 @@ module OmfRc::ResourceProxyDSL 
     | 
|
| 
       75 
75 
     | 
    
         
             
                  name = name.to_s
         
     | 
| 
       76 
76 
     | 
    
         
             
                  begin
         
     | 
| 
       77 
77 
     | 
    
         
             
                    # In case of module defined inline
         
     | 
| 
       78 
     | 
    
         
            -
                    include "OmfRc::Util::#{name. 
     | 
| 
      
 78 
     | 
    
         
            +
                    include "OmfRc::Util::#{name.camelize}".constantize
         
     | 
| 
       79 
79 
     | 
    
         
             
                  rescue NameError
         
     | 
| 
       80 
80 
     | 
    
         
             
                    begin
         
     | 
| 
       81 
81 
     | 
    
         
             
                      # Then we try to require the file and include the module
         
     | 
| 
       82 
82 
     | 
    
         
             
                      require "#{UTIL_DIR}/#{name}"
         
     | 
| 
       83 
     | 
    
         
            -
                      include "OmfRc::Util::#{name. 
     | 
| 
      
 83 
     | 
    
         
            +
                      include "OmfRc::Util::#{name.camelize}".constantize
         
     | 
| 
       84 
84 
     | 
    
         
             
                    rescue LoadError => le
         
     | 
| 
       85 
85 
     | 
    
         
             
                      logger.error le.message
         
     | 
| 
       86 
86 
     | 
    
         
             
                    rescue NameError => ne
         
     | 
| 
         @@ -89,22 +89,6 @@ module OmfRc::ResourceProxyDSL 
     | 
|
| 
       89 
89 
     | 
    
         
             
                  end
         
     | 
| 
       90 
90 
     | 
    
         
             
                end
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
                # Register a named utility entry with factory class, normally this should be done in the utility module
         
     | 
| 
       93 
     | 
    
         
            -
                #
         
     | 
| 
       94 
     | 
    
         
            -
                # @param [Symbol] name of the resource proxy
         
     | 
| 
       95 
     | 
    
         
            -
                # @example suppose we define a utility for iw command interaction
         
     | 
| 
       96 
     | 
    
         
            -
                #
         
     | 
| 
       97 
     | 
    
         
            -
                #   module OmfRc::Util::Iw
         
     | 
| 
       98 
     | 
    
         
            -
                #     include OmfRc::ResourceProxyDSL
         
     | 
| 
       99 
     | 
    
         
            -
                #
         
     | 
| 
       100 
     | 
    
         
            -
                #     # Let the factory know it is available
         
     | 
| 
       101 
     | 
    
         
            -
                #     register_utility :iw
         
     | 
| 
       102 
     | 
    
         
            -
                #   end
         
     | 
| 
       103 
     | 
    
         
            -
                def register_utility(name)
         
     | 
| 
       104 
     | 
    
         
            -
                  name = name.to_sym
         
     | 
| 
       105 
     | 
    
         
            -
                  OmfRc::ResourceFactory.register_utility(name)
         
     | 
| 
       106 
     | 
    
         
            -
                end
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
92 
     | 
    
         
             
                # Register a configurable property
         
     | 
| 
       109 
93 
     | 
    
         
             
                #
         
     | 
| 
       110 
94 
     | 
    
         
             
                # @param [Symbol] name of the property
         
     | 
    
        data/lib/omf_rc/util/iw.rb
    CHANGED
    
    | 
         @@ -1,10 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'hashie'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       2 
3 
     | 
    
         
             
            module OmfRc::Util::Iw
         
     | 
| 
       3 
4 
     | 
    
         
             
              include OmfRc::ResourceProxyDSL
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
              OmfCommon::Command.execute("iw help").chomp.gsub(/^\t/, '').split("\n").map {|v| v.match(/[phy|dev] <.+> set (\w+) .*/) && $1 }.compact.uniq.each do |p|
         
     | 
| 
       6 
7 
     | 
    
         
             
                configure p do |resource, value|
         
     | 
| 
       7 
     | 
    
         
            -
                  OmfCommon::Command.execute(" 
     | 
| 
      
 8 
     | 
    
         
            +
                  OmfCommon::Command.execute("iw #{resource.hrn} set #{p} #{value}")
         
     | 
| 
       8 
9 
     | 
    
         
             
                end
         
     | 
| 
       9 
10 
     | 
    
         
             
              end
         
     | 
| 
       10 
11 
     | 
    
         | 
    
        data/lib/omf_rc/util/mock.rb
    CHANGED
    
    | 
         @@ -1,8 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module OmfRc::Util::Mock
         
     | 
| 
       2 
2 
     | 
    
         
             
              include OmfRc::ResourceProxyDSL
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
              register_utility :mock
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
              request :nothing do |resource|
         
     | 
| 
       7 
5 
     | 
    
         
             
                resource.uid
         
     | 
| 
       8 
6 
     | 
    
         
             
              end
         
     | 
| 
         @@ -17,10 +15,6 @@ module OmfRc::Util::Mock 
     | 
|
| 
       17 
15 
     | 
    
         
             
                OmfRc::ResourceFactory.proxy_list
         
     | 
| 
       18 
16 
     | 
    
         
             
              end
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
              request :resource_utility_list do
         
     | 
| 
       21 
     | 
    
         
            -
                OmfRc::ResourceFactory.utility_list
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
18 
     | 
    
         
             
              request :kernel_version do
         
     | 
| 
       25 
19 
     | 
    
         
             
                OmfCommon::Command.execute("uname -r")
         
     | 
| 
       26 
20 
     | 
    
         
             
              end
         
     | 
    
        data/lib/omf_rc/util/mod.rb
    CHANGED
    
    | 
         @@ -1,12 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module OmfRc::Util::Mod
         
     | 
| 
       2 
2 
     | 
    
         
             
              include OmfRc::ResourceProxyDSL
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
              register_utility :mod
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
              request :modules do
         
     | 
| 
       7 
5 
     | 
    
         
             
                OmfCommon::Command.execute('lsmod').split("\n").map do |v|
         
     | 
| 
       8 
     | 
    
         
            -
                  v.match(/^( 
     | 
| 
       9 
     | 
    
         
            -
                end.compact
         
     | 
| 
      
 6 
     | 
    
         
            +
                  v.match(/^(\w+).+$/) && $1
         
     | 
| 
      
 7 
     | 
    
         
            +
                end.compact.tap { |ary| ary.shift }
         
     | 
| 
       10 
8 
     | 
    
         
             
              end
         
     | 
| 
       11 
9 
     | 
    
         | 
| 
       12 
10 
     | 
    
         
             
              configure :load_module do |resource, value|
         
     | 
    
        data/lib/omf_rc/version.rb
    CHANGED
    
    
    
        data/lib/omf_rc.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,228 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Usage:	iw [options] command
         
     | 
| 
      
 2 
     | 
    
         
            +
            Options:
         
     | 
| 
      
 3 
     | 
    
         
            +
            	--debug		enable netlink debugging
         
     | 
| 
      
 4 
     | 
    
         
            +
            	--version	show version (3.4)
         
     | 
| 
      
 5 
     | 
    
         
            +
            Commands:
         
     | 
| 
      
 6 
     | 
    
         
            +
            	help [command]
         
     | 
| 
      
 7 
     | 
    
         
            +
            		Print usage for all or a specific command, e.g.
         
     | 
| 
      
 8 
     | 
    
         
            +
            		"help wowlan" or "help wowlan enable".
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            	event [-t] [-r] [-f]
         
     | 
| 
      
 11 
     | 
    
         
            +
            		Monitor events from the kernel.
         
     | 
| 
      
 12 
     | 
    
         
            +
            		-t - print timestamp
         
     | 
| 
      
 13 
     | 
    
         
            +
            		-r - print relative timstamp
         
     | 
| 
      
 14 
     | 
    
         
            +
            		-f - print full frame for auth/assoc etc.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            	phy
         
     | 
| 
      
 17 
     | 
    
         
            +
            	list
         
     | 
| 
      
 18 
     | 
    
         
            +
            		List all wireless devices and their capabilities.
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            	phy <phyname> info
         
     | 
| 
      
 21 
     | 
    
         
            +
            		Show capabilities for the specified wireless device.
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            	dev
         
     | 
| 
      
 24 
     | 
    
         
            +
            		List all network interfaces for wireless hardware.
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            	dev <devname> info
         
     | 
| 
      
 27 
     | 
    
         
            +
            		Show information for this interface.
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            	dev <devname> del
         
     | 
| 
      
 30 
     | 
    
         
            +
            		Remove this virtual interface
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            	dev <devname> interface add <name> type <type> [mesh_id <meshid>] [4addr on|off] [flags <flag>*]
         
     | 
| 
      
 33 
     | 
    
         
            +
            	phy <phyname> interface add <name> type <type> [mesh_id <meshid>] [4addr on|off] [flags <flag>*]
         
     | 
| 
      
 34 
     | 
    
         
            +
            		Add a new virtual interface with the given configuration.
         
     | 
| 
      
 35 
     | 
    
         
            +
            		Valid interface types are: managed, ibss, monitor, mesh, wds.
         
     | 
| 
      
 36 
     | 
    
         
            +
            		
         
     | 
| 
      
 37 
     | 
    
         
            +
            		The flags are only used for monitor interfaces, valid flags are:
         
     | 
| 
      
 38 
     | 
    
         
            +
            		none:     no special flags
         
     | 
| 
      
 39 
     | 
    
         
            +
            		fcsfail:  show frames with FCS errors
         
     | 
| 
      
 40 
     | 
    
         
            +
            		control:  show control frames
         
     | 
| 
      
 41 
     | 
    
         
            +
            		otherbss: show frames from other BSSes
         
     | 
| 
      
 42 
     | 
    
         
            +
            		cook:     use cooked mode
         
     | 
| 
      
 43 
     | 
    
         
            +
            		
         
     | 
| 
      
 44 
     | 
    
         
            +
            		The mesh_id is used only for mesh mode.
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            	dev <devname> ibss join <SSID> <freq in MHz> [HT20|HT40+|HT40-|NOHT] [fixed-freq] [<fixed bssid>] [beacon-interval <TU>] [basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] [key d:0:abcde]
         
     | 
| 
      
 47 
     | 
    
         
            +
            		Join the IBSS cell with the given SSID, if it doesn't exist create
         
     | 
| 
      
 48 
     | 
    
         
            +
            		it on the given frequency. When fixed frequency is requested, don't
         
     | 
| 
      
 49 
     | 
    
         
            +
            		join/create a cell on a different frequency. When a fixed BSSID is
         
     | 
| 
      
 50 
     | 
    
         
            +
            		requested use that BSSID and do not adopt another cell's BSSID even
         
     | 
| 
      
 51 
     | 
    
         
            +
            		if it has higher TSF and the same SSID. If an IBSS is created, create
         
     | 
| 
      
 52 
     | 
    
         
            +
            		it with the specified basic-rates, multicast-rate and beacon-interval.
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            	dev <devname> ibss leave
         
     | 
| 
      
 55 
     | 
    
         
            +
            		Leave the current IBSS cell.
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            	dev <devname> station dump
         
     | 
| 
      
 58 
     | 
    
         
            +
            		List all stations known, e.g. the AP on managed interfaces
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            	dev <devname> station set <MAC address> vlan <ifindex>
         
     | 
| 
      
 61 
     | 
    
         
            +
            		Set an AP VLAN for this station.
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            	dev <devname> station set <MAC address> plink_action <open|block>
         
     | 
| 
      
 64 
     | 
    
         
            +
            		Set mesh peer link action for this station (peer).
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            	dev <devname> station del <MAC address>
         
     | 
| 
      
 67 
     | 
    
         
            +
            		Remove the given station entry (use with caution!)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            	dev <devname> station get <MAC address>
         
     | 
| 
      
 70 
     | 
    
         
            +
            		Get information for a specific station.
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            	dev <devname> survey dump
         
     | 
| 
      
 73 
     | 
    
         
            +
            		List all gathered channel survey data
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            	dev <devname> mesh leave
         
     | 
| 
      
 76 
     | 
    
         
            +
            		Leave a mesh.
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            	dev <devname> mesh join <mesh ID> [mcast-rate <rate in Mbps>] [<param>=<value>]*
         
     | 
| 
      
 79 
     | 
    
         
            +
            		Join a mesh with the given mesh ID with mcast-rate and mesh parameters.
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            	dev <devname> mpath dump
         
     | 
| 
      
 82 
     | 
    
         
            +
            		List known mesh paths.
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            	dev <devname> mpath set <destination MAC address> next_hop <next hop MAC address>
         
     | 
| 
      
 85 
     | 
    
         
            +
            		Set an existing mesh path's next hop.
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            	dev <devname> mpath new <destination MAC address> next_hop <next hop MAC address>
         
     | 
| 
      
 88 
     | 
    
         
            +
            		Create a new mesh path (instead of relying on automatic discovery).
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            	dev <devname> mpath del <MAC address>
         
     | 
| 
      
 91 
     | 
    
         
            +
            		Remove the mesh path to the given node.
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            	dev <devname> mpath get <MAC address>
         
     | 
| 
      
 94 
     | 
    
         
            +
            		Get information on mesh path to the given node.
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
            	dev <devname> scan [-u] [freq <freq>*] [ies <hex as 00:11:..>] [ssid <ssid>*|passive]
         
     | 
| 
      
 97 
     | 
    
         
            +
            		Scan on the given frequencies and probe for the given SSIDs
         
     | 
| 
      
 98 
     | 
    
         
            +
            		(or wildcard if not given) unless passive scanning is requested.
         
     | 
| 
      
 99 
     | 
    
         
            +
            		If -u is specified print unknown data in the scan results.
         
     | 
| 
      
 100 
     | 
    
         
            +
            		Specified (vendor) IEs must be well-formed.
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            	dev <devname> scan trigger [freq <freq>*] [ies <hex as 00:11:..>] [ssid <ssid>*|passive]
         
     | 
| 
      
 103 
     | 
    
         
            +
            		Trigger a scan on the given frequencies with probing for the given
         
     | 
| 
      
 104 
     | 
    
         
            +
            		SSIDs (or wildcard if not given) unless passive scanning is requested.
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            	dev <devname> scan dump [-u]
         
     | 
| 
      
 107 
     | 
    
         
            +
            		Dump the current scan results. If -u is specified, print unknown
         
     | 
| 
      
 108 
     | 
    
         
            +
            		data in scan results.
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            	reg get
         
     | 
| 
      
 111 
     | 
    
         
            +
            		Print out the kernel's current regulatory domain information.
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            	reg set <ISO/IEC 3166-1 alpha2>
         
     | 
| 
      
 114 
     | 
    
         
            +
            		Notify the kernel about the current regulatory domain.
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            	dev <devname> connect [-w] <SSID> [<freq in MHz>] [<bssid>] [key 0:abcde d:1:6162636465]
         
     | 
| 
      
 117 
     | 
    
         
            +
            		Join the network with the given SSID (and frequency, BSSID).
         
     | 
| 
      
 118 
     | 
    
         
            +
            		With -w, wait for the connect to finish or fail.
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
            	dev <devname> disconnect
         
     | 
| 
      
 121 
     | 
    
         
            +
            		Disconnect from the current network.
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            	dev <devname> link
         
     | 
| 
      
 124 
     | 
    
         
            +
            		Print information about the current link, if any.
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            	dev <devname> offchannel <freq> <duration>
         
     | 
| 
      
 127 
     | 
    
         
            +
            		Leave operating channel and go to the given channel for a while.
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            	dev <devname> cqm rssi <threshold|off> [<hysteresis>]
         
     | 
| 
      
 130 
     | 
    
         
            +
            		Set connection quality monitor RSSI threshold.
         
     | 
| 
      
 131 
     | 
    
         
            +
            		
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
            	phy <phyname> wowlan show 
         
     | 
| 
      
 134 
     | 
    
         
            +
            		Show WoWLAN status.
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            	phy <phyname> wowlan disable 
         
     | 
| 
      
 137 
     | 
    
         
            +
            		Disable WoWLAN.
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            	phy <phyname> wowlan enable [any] [disconnect] [magic-packet] [gtk-rekey-failure] [eap-identity-request] [4way-handshake] [rfkill-release] [patterns <pattern>*]
         
     | 
| 
      
 140 
     | 
    
         
            +
            		Enable WoWLAN with the given triggers.
         
     | 
| 
      
 141 
     | 
    
         
            +
            		Each pattern is given as a bytestring with '-' in places where any byte
         
     | 
| 
      
 142 
     | 
    
         
            +
            		may be present, e.g. 00:11:22:-:44 will match 00:11:22:33:44 and
         
     | 
| 
      
 143 
     | 
    
         
            +
            		00:11:22:33:ff:44 etc.
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
            	dev <devname> roc start <freq> <time>
         
     | 
| 
      
 146 
     | 
    
         
            +
            		
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            	phy <phyname> set antenna <bitmap> | all | <tx bitmap> <rx bitmap>
         
     | 
| 
      
 149 
     | 
    
         
            +
            		Set a bitmap of allowed antennas to use for TX and RX.
         
     | 
| 
      
 150 
     | 
    
         
            +
            		The driver may reject antenna configurations it cannot support.
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
            	dev <devname> set txpower <auto|fixed|limit> [<tx power in mBm>]
         
     | 
| 
      
 153 
     | 
    
         
            +
            		Specify transmit power level and setting type.
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
            	phy <phyname> set txpower <auto|fixed|limit> [<tx power in mBm>]
         
     | 
| 
      
 156 
     | 
    
         
            +
            		Specify transmit power level and setting type.
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
            	phy <phyname> set distance <distance>
         
     | 
| 
      
 159 
     | 
    
         
            +
            		Set appropriate coverage class for given link distance in meters.
         
     | 
| 
      
 160 
     | 
    
         
            +
            		Valid values: 0 - 114750
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
            	phy <phyname> set coverage <coverage class>
         
     | 
| 
      
 163 
     | 
    
         
            +
            		Set coverage class (1 for every 3 usec of air propagation time).
         
     | 
| 
      
 164 
     | 
    
         
            +
            		Valid values: 0 - 255.
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
            	phy <phyname> set netns <pid>
         
     | 
| 
      
 167 
     | 
    
         
            +
            		Put this wireless device into a different network namespace
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            	phy <phyname> set rts <rts threshold|off>
         
     | 
| 
      
 170 
     | 
    
         
            +
            		Set rts threshold.
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
            	phy <phyname> set frag <fragmentation threshold|off>
         
     | 
| 
      
 173 
     | 
    
         
            +
            		Set fragmentation threshold.
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
            	dev <devname> set channel <channel> [HT20|HT40+|HT40-]
         
     | 
| 
      
 176 
     | 
    
         
            +
            	phy <phyname> set channel <channel> [HT20|HT40+|HT40-]
         
     | 
| 
      
 177 
     | 
    
         
            +
            	dev <devname> set freq <freq> [HT20|HT40+|HT40-]
         
     | 
| 
      
 178 
     | 
    
         
            +
            	phy <phyname> set freq <freq> [HT20|HT40+|HT40-]
         
     | 
| 
      
 179 
     | 
    
         
            +
            		Set frequency/channel the hardware is using, including HT
         
     | 
| 
      
 180 
     | 
    
         
            +
            		configuration.
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
            	phy <phyname> set name <new name>
         
     | 
| 
      
 183 
     | 
    
         
            +
            		Rename this wireless device.
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
            	dev <devname> set peer <MAC address>
         
     | 
| 
      
 186 
     | 
    
         
            +
            		Set interface WDS peer.
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
            	dev <devname> set noack_map <map>
         
     | 
| 
      
 189 
     | 
    
         
            +
            		Set the NoAck map for the TIDs. (0x0009 = BE, 0x0006 = BK, 0x0030 = VI, 0x00C0 = VO)
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
            	dev <devname> set 4addr <on|off>
         
     | 
| 
      
 192 
     | 
    
         
            +
            		Set interface 4addr (WDS) mode.
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
            	dev <devname> set type <type>
         
     | 
| 
      
 195 
     | 
    
         
            +
            		Set interface type/mode.
         
     | 
| 
      
 196 
     | 
    
         
            +
            		Valid interface types are: managed, ibss, monitor, mesh, wds.
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
            	dev <devname> set meshid <meshid>
         
     | 
| 
      
 199 
     | 
    
         
            +
            	dev <devname> set monitor <flag>*
         
     | 
| 
      
 200 
     | 
    
         
            +
            		Set monitor flags. Valid flags are:
         
     | 
| 
      
 201 
     | 
    
         
            +
            		none:     no special flags
         
     | 
| 
      
 202 
     | 
    
         
            +
            		fcsfail:  show frames with FCS errors
         
     | 
| 
      
 203 
     | 
    
         
            +
            		control:  show control frames
         
     | 
| 
      
 204 
     | 
    
         
            +
            		otherbss: show frames from other BSSes
         
     | 
| 
      
 205 
     | 
    
         
            +
            		cook:     use cooked mode
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
            	dev <devname> set mesh_param <param>=<value> [<param>=<value>]*
         
     | 
| 
      
 208 
     | 
    
         
            +
            		Set mesh parameter (run command without any to see available ones).
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
            	dev <devname> set power_save <on|off>
         
     | 
| 
      
 211 
     | 
    
         
            +
            		Set power save state to on or off.
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
            	dev <devname> set bitrates [legacy-<2.4|5> <legacy rate in Mbps>*] [mcs-<2.4|5> <MCS index>*]
         
     | 
| 
      
 214 
     | 
    
         
            +
            		Sets up the specified rate masks.
         
     | 
| 
      
 215 
     | 
    
         
            +
            		Not passing any arguments would clear the existing mask (if any).
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
            	dev <devname> get mesh_param [<param>]
         
     | 
| 
      
 218 
     | 
    
         
            +
            		Retrieve mesh parameter (run command without any to see available ones).
         
     | 
| 
      
 219 
     | 
    
         
            +
             
     | 
| 
      
 220 
     | 
    
         
            +
            	dev <devname> get power_save <param>
         
     | 
| 
      
 221 
     | 
    
         
            +
            		Retrieve power save state.
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
             
     | 
| 
      
 224 
     | 
    
         
            +
            You can omit the 'phy' or 'dev' if the identification is unique,
         
     | 
| 
      
 225 
     | 
    
         
            +
            e.g. "iw wlan0 info" or "iw phy0 info". (Don't when scripting.)
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            Do NOT screenscrape this tool, we don't consider its output stable.
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Connected to 00:14:bf:0c:e7:a4 (on wlan0)
         
     | 
| 
      
 2 
     | 
    
         
            +
            	SSID: dd-wrt
         
     | 
| 
      
 3 
     | 
    
         
            +
            	freq: 2427
         
     | 
| 
      
 4 
     | 
    
         
            +
            	RX: 1772745 bytes (25092 packets)
         
     | 
| 
      
 5 
     | 
    
         
            +
            	TX: 9473 bytes (111 packets)
         
     | 
| 
      
 6 
     | 
    
         
            +
            	signal: -37 dBm
         
     | 
| 
      
 7 
     | 
    
         
            +
            	tx bitrate: 1.0 MBit/s
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            	bss flags:	short-preamble short-slot-time
         
     | 
| 
      
 10 
     | 
    
         
            +
            	dtim period:	0
         
     | 
| 
      
 11 
     | 
    
         
            +
            	beacon int:	100
         
     | 
    
        data/test/fixture/lsmod
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Module                  Size  Used by
         
     | 
| 
      
 2 
     | 
    
         
            +
            ip6table_filter        12540  0 
         
     | 
| 
      
 3 
     | 
    
         
            +
            ip6_tables             22175  1 ip6table_filter
         
     | 
| 
      
 4 
     | 
    
         
            +
            iptable_filter         12536  0 
         
     | 
| 
      
 5 
     | 
    
         
            +
            ip_tables              22042  1 iptable_filter
         
     | 
| 
      
 6 
     | 
    
         
            +
            ebtable_nat            12580  0 
         
     | 
| 
      
 7 
     | 
    
         
            +
            ebtables               26235  1 ebtable_nat
         
     | 
| 
      
 8 
     | 
    
         
            +
            x_tables               19073  5 ebtables,ip_tables,iptable_filter,ip6_tables,ip6table_filter
         
     | 
| 
      
 9 
     | 
    
         
            +
            parport_pc             22364  0 
         
     | 
| 
      
 10 
     | 
    
         
            +
            ppdev                  12763  0 
         
     | 
| 
      
 11 
     | 
    
         
            +
            lp                     17149  0 
         
     | 
| 
      
 12 
     | 
    
         
            +
            parport                31858  3 lp,ppdev,parport_pc
         
     | 
| 
      
 13 
     | 
    
         
            +
            rfcomm                 33656  8 
         
     | 
| 
      
 14 
     | 
    
         
            +
            bnep                   17567  2 
         
     | 
| 
      
 15 
     | 
    
         
            +
            cpufreq_stats          12866  0 
         
     | 
| 
      
 16 
     | 
    
         
            +
            cpufreq_userspace      12576  0 
         
     | 
| 
      
 17 
     | 
    
         
            +
            cpufreq_powersave      12454  0 
         
     | 
| 
      
 18 
     | 
    
         
            +
            cpufreq_conservative    13147  0 
         
     | 
| 
      
 19 
     | 
    
         
            +
            pci_stub               12429  1 
         
     | 
| 
      
 20 
     | 
    
         
            +
            vboxpci                19066  0 
         
     | 
| 
      
 21 
     | 
    
         
            +
            autofs4                27582  2 
         
     | 
| 
      
 22 
     | 
    
         
            +
            vboxnetadp             25443  0 
         
     | 
| 
      
 23 
     | 
    
         
            +
            vboxnetflt             23571  0 
         
     | 
| 
      
 24 
     | 
    
         
            +
            vboxdrv               190105  3 vboxnetflt,vboxnetadp,vboxpci
         
     | 
| 
      
 25 
     | 
    
         
            +
            uinput                 17440  1 
         
     | 
| 
      
 26 
     | 
    
         
            +
            nfsd                  211858  2 
         
     | 
| 
      
 27 
     | 
    
         
            +
            nfs                   312243  0 
         
     | 
| 
      
 28 
     | 
    
         
            +
            nfs_acl                12511  2 nfs,nfsd
         
     | 
| 
      
 29 
     | 
    
         
            +
            auth_rpcgss            37143  2 nfs,nfsd
         
     | 
| 
      
 30 
     | 
    
         
            +
            fscache                36739  1 nfs
         
     | 
| 
      
 31 
     | 
    
         
            +
            lockd                  67328  2 nfs,nfsd
         
     | 
| 
      
 32 
     | 
    
         
            +
            sunrpc                173671  6 lockd,auth_rpcgss,nfs_acl,nfs,nfsd
         
     | 
| 
      
 33 
     | 
    
         
            +
            loop                   22641  0 
         
     | 
| 
      
 34 
     | 
    
         
            +
            fuse                   61981  1 
         
     | 
| 
      
 35 
     | 
    
         
            +
            kvm                   287662  0 
         
     | 
| 
      
 36 
     | 
    
         
            +
            snd_hda_codec_conexant    45252  1 
         
     | 
| 
      
 37 
     | 
    
         
            +
            joydev                 17266  0 
         
     | 
| 
      
 38 
     | 
    
         
            +
            arc4                   12458  2 
         
     | 
| 
      
 39 
     | 
    
         
            +
            coretemp               12898  0 
         
     | 
| 
      
 40 
     | 
    
         
            +
            crc32c_intel           12747  0 
         
     | 
| 
      
 41 
     | 
    
         
            +
            btusb                  17502  2 
         
     | 
| 
      
 42 
     | 
    
         
            +
            bluetooth             119406  23 btusb,bnep,rfcomm
         
     | 
| 
      
 43 
     | 
    
         
            +
            crc16                  12343  1 bluetooth
         
     | 
| 
      
 44 
     | 
    
         
            +
            snd_hda_intel          26345  0 
         
     | 
| 
      
 45 
     | 
    
         
            +
            ghash_clmulni_intel    13133  0 
         
     | 
| 
      
 46 
     | 
    
         
            +
            i2c_i801               16870  0 
         
     | 
| 
      
 47 
     | 
    
         
            +
            snd_hda_codec          78031  2 snd_hda_intel,snd_hda_codec_conexant
         
     | 
| 
      
 48 
     | 
    
         
            +
            snd_hwdep              13186  1 snd_hda_codec
         
     | 
| 
      
 49 
     | 
    
         
            +
            snd_pcm                63900  2 snd_hda_codec,snd_hda_intel
         
     | 
| 
      
 50 
     | 
    
         
            +
            snd_page_alloc         13003  2 snd_pcm,snd_hda_intel
         
     | 
| 
      
 51 
     | 
    
         
            +
            aesni_intel            50667  0 
         
     | 
| 
      
 52 
     | 
    
         
            +
            aes_x86_64             16796  1 aesni_intel
         
     | 
| 
      
 53 
     | 
    
         
            +
            pcspkr                 12579  0 
         
     | 
| 
      
 54 
     | 
    
         
            +
            psmouse                64455  0 
         
     | 
| 
      
 55 
     | 
    
         
            +
            thinkpad_acpi          61270  0 
         
     | 
| 
      
 56 
     | 
    
         
            +
            aes_generic            33026  2 aes_x86_64,aesni_intel
         
     | 
| 
      
 57 
     | 
    
         
            +
            nvram                  13049  1 thinkpad_acpi
         
     | 
| 
      
 58 
     | 
    
         
            +
            cryptd                 14517  2 aesni_intel,ghash_clmulni_intel
         
     | 
| 
      
 59 
     | 
    
         
            +
            serio_raw              12931  0 
         
     | 
| 
      
 60 
     | 
    
         
            +
            snd_seq                45093  0 
         
     | 
| 
      
 61 
     | 
    
         
            +
            evdev                  17562  15 
         
     | 
| 
      
 62 
     | 
    
         
            +
            snd_seq_device         13176  1 snd_seq
         
     | 
| 
      
 63 
     | 
    
         
            +
            snd_timer              22917  2 snd_seq,snd_pcm
         
     | 
| 
      
 64 
     | 
    
         
            +
            iwlwifi               170823  0 
         
     | 
| 
      
 65 
     | 
    
         
            +
            i915                  355994  3 
         
     | 
| 
      
 66 
     | 
    
         
            +
            mac80211              192768  1 iwlwifi
         
     | 
| 
      
 67 
     | 
    
         
            +
            snd                    52850  9 snd_timer,snd_seq_device,snd_seq,thinkpad_acpi,snd_pcm,snd_hwdep,snd_hda_codec,snd_hda_intel,snd_hda_codec_conexant
         
     | 
| 
      
 68 
     | 
    
         
            +
            cfg80211              137140  2 mac80211,iwlwifi
         
     | 
| 
      
 69 
     | 
    
         
            +
            drm_kms_helper         27227  1 i915
         
     | 
| 
      
 70 
     | 
    
         
            +
            iTCO_wdt               17081  0 
         
     | 
| 
      
 71 
     | 
    
         
            +
            iTCO_vendor_support    12704  1 iTCO_wdt
         
     | 
| 
      
 72 
     | 
    
         
            +
            drm                   167670  4 drm_kms_helper,i915
         
     | 
| 
      
 73 
     | 
    
         
            +
            soundcore              13065  1 snd
         
     | 
| 
      
 74 
     | 
    
         
            +
            battery                13109  0 
         
     | 
| 
      
 75 
     | 
    
         
            +
            rfkill                 19012  4 cfg80211,thinkpad_acpi,bluetooth
         
     | 
| 
      
 76 
     | 
    
         
            +
            i2c_algo_bit           12841  1 i915
         
     | 
| 
      
 77 
     | 
    
         
            +
            i2c_core               23876  5 i2c_algo_bit,drm,drm_kms_helper,i915,i2c_i801
         
     | 
| 
      
 78 
     | 
    
         
            +
            ac                     12624  0 
         
     | 
| 
      
 79 
     | 
    
         
            +
            power_supply           13475  2 ac,battery
         
     | 
| 
      
 80 
     | 
    
         
            +
            tpm_tis                17454  0 
         
     | 
| 
      
 81 
     | 
    
         
            +
            tpm                    17862  1 tpm_tis
         
     | 
| 
      
 82 
     | 
    
         
            +
            tpm_bios               12948  1 tpm
         
     | 
| 
      
 83 
     | 
    
         
            +
            video                  17628  1 i915
         
     | 
| 
      
 84 
     | 
    
         
            +
            wmi                    13243  0 
         
     | 
| 
      
 85 
     | 
    
         
            +
            acpi_cpufreq           12935  1 
         
     | 
| 
      
 86 
     | 
    
         
            +
            mperf                  12453  1 acpi_cpufreq
         
     | 
| 
      
 87 
     | 
    
         
            +
            button                 12937  1 i915
         
     | 
| 
      
 88 
     | 
    
         
            +
            processor              28157  1 acpi_cpufreq
         
     | 
| 
      
 89 
     | 
    
         
            +
            xfs                   594991  4 
         
     | 
| 
      
 90 
     | 
    
         
            +
            dm_mod                 63545  12 
         
     | 
| 
      
 91 
     | 
    
         
            +
            sd_mod                 36136  2 
         
     | 
| 
      
 92 
     | 
    
         
            +
            crc_t10dif             12348  1 sd_mod
         
     | 
| 
      
 93 
     | 
    
         
            +
            sdhci_pci              17976  0 
         
     | 
| 
      
 94 
     | 
    
         
            +
            ahci                   24997  1 
         
     | 
| 
      
 95 
     | 
    
         
            +
            libahci                22860  1 ahci
         
     | 
| 
      
 96 
     | 
    
         
            +
            xhci_hcd               73170  0 
         
     | 
| 
      
 97 
     | 
    
         
            +
            libata                140589  2 libahci,ahci
         
     | 
| 
      
 98 
     | 
    
         
            +
            sdhci                  27053  1 sdhci_pci
         
     | 
| 
      
 99 
     | 
    
         
            +
            mmc_core               72460  2 sdhci,sdhci_pci
         
     | 
| 
      
 100 
     | 
    
         
            +
            ehci_hcd               40215  0 
         
     | 
| 
      
 101 
     | 
    
         
            +
            scsi_mod              162372  2 libata,sd_mod
         
     | 
| 
      
 102 
     | 
    
         
            +
            usbcore               128498  4 ehci_hcd,xhci_hcd,btusb
         
     | 
| 
      
 103 
     | 
    
         
            +
            e1000e                120822  0 
         
     | 
| 
      
 104 
     | 
    
         
            +
            usb_common             12354  1 usbcore
         
     | 
| 
      
 105 
     | 
    
         
            +
            thermal                17383  0 
         
     | 
| 
      
 106 
     | 
    
         
            +
            thermal_sys            18040  3 thermal,processor,video
         
     | 
    
        data/test/mock_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            FIXTURE_DIR = "#{File.dirname(__FILE__)}/fixture"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            OmfCommon::Command = MiniTest::Mock.new
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            def mock_execute(result, command_pattern)
         
     | 
| 
      
 6 
     | 
    
         
            +
              OmfCommon::Command.expect :execute, result, [command_pattern]
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            def mock_verify_execute
         
     | 
| 
      
 10 
     | 
    
         
            +
              OmfCommon::Command.verify
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            def fixture(name)
         
     | 
| 
      
 14 
     | 
    
         
            +
              File.read("#{FIXTURE_DIR}/#{name.to_s}")
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,13 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'mock_helper'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'omf_rc/resource_factory'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            describe OmfRc::ResourceFactory do
         
     | 
| 
       5 
6 
     | 
    
         
             
              describe "when resource proxies loaded" do
         
     | 
| 
       6 
7 
     | 
    
         
             
                it "must have list of registered proxies and utilities" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  OmfRc::ResourceFactory.load_default_resource_proxies
         
     | 
| 
       7 
9 
     | 
    
         
             
                  OmfRc::ResourceFactory.proxy_list.must_include :mock
         
     | 
| 
       8 
10 
     | 
    
         
             
                end
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
12 
     | 
    
         
             
                it "must be able to create new resource proxy" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  OmfRc::ResourceFactory.load_default_resource_proxies
         
     | 
| 
       11 
14 
     | 
    
         
             
                  mock = OmfRc::ResourceFactory.new(:mock)
         
     | 
| 
       12 
15 
     | 
    
         
             
                  mock.must_be_kind_of OmfRc::ResourceProxy::AbstractResource
         
     | 
| 
       13 
16 
     | 
    
         
             
                  mock.must_respond_to :request_nothing
         
     | 
| 
         @@ -42,6 +42,11 @@ describe AbstractResource do 
     | 
|
| 
       42 
42 
     | 
    
         
             
                  @node.uid.must_match /.{8}-.{4}-.{4}-.{4}-.{12}/
         
     | 
| 
       43 
43 
     | 
    
         
             
                  @node.request_uid.must_match /.{8}-.{4}-.{4}-.{4}-.{12}/
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                it "could keep state inside 'property' instnace variable" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @node.property.bob = "test"
         
     | 
| 
      
 48 
     | 
    
         
            +
                  @node.property.bob.must_equal "test"
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
       45 
50 
     | 
    
         
             
              end
         
     | 
| 
       46 
51 
     | 
    
         | 
| 
       47 
52 
     | 
    
         
             
              describe "when asked to create another resource" do
         
     | 
| 
         @@ -59,7 +64,6 @@ describe AbstractResource do 
     | 
|
| 
       59 
64 
     | 
    
         
             
              describe "when destroyed" do
         
     | 
| 
       60 
65 
     | 
    
         
             
                it "must destroy itself together with any resources created by it" do
         
     | 
| 
       61 
66 
     | 
    
         
             
                  @node.release
         
     | 
| 
       62 
     | 
    
         
            -
                  @node.frozen?.must_equal true
         
     | 
| 
       63 
67 
     | 
    
         
             
                  @node.children.must_be_empty
         
     | 
| 
       64 
68 
     | 
    
         
             
                end
         
     | 
| 
       65 
69 
     | 
    
         
             
              end
         
     | 
| 
         @@ -78,5 +82,3 @@ describe AbstractResource do 
     | 
|
| 
       78 
82 
     | 
    
         
             
                end
         
     | 
| 
       79 
83 
     | 
    
         
             
              end
         
     | 
| 
       80 
84 
     | 
    
         
             
            end
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'omf_rc/resource_proxy/node'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe OmfRc::ResourceProxy::Node do
         
     | 
| 
      
 5 
     | 
    
         
            +
              describe "when included in the resource instance" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                it "must be able to tell registered proxies" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:node, hrn: 'node_test').request_proxies.must_include :node
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -5,7 +5,6 @@ describe OmfRc::ResourceProxyDSL do 
     | 
|
| 
       5 
5 
     | 
    
         
             
              before do
         
     | 
| 
       6 
6 
     | 
    
         
             
                module OmfRc::Util::MockUtility
         
     | 
| 
       7 
7 
     | 
    
         
             
                  include OmfRc::ResourceProxyDSL
         
     | 
| 
       8 
     | 
    
         
            -
                  register_utility :mock_utility
         
     | 
| 
       9 
8 
     | 
    
         
             
                  configure :alpha
         
     | 
| 
       10 
9 
     | 
    
         
             
                  request :alpha
         
     | 
| 
       11 
10 
     | 
    
         
             
                end
         
     | 
| 
         @@ -16,9 +15,7 @@ describe OmfRc::ResourceProxyDSL do 
     | 
|
| 
       16 
15 
     | 
    
         
             
                  register_proxy :mock_proxy
         
     | 
| 
       17 
16 
     | 
    
         
             
                  utility :mock_utility
         
     | 
| 
       18 
17 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                  hook :before_ready 
     | 
| 
       20 
     | 
    
         
            -
                    "bob"
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  hook :before_ready
         
     | 
| 
       22 
19 
     | 
    
         
             
                  hook :before_release
         
     | 
| 
       23 
20 
     | 
    
         
             
                  configure :bravo
         
     | 
| 
       24 
21 
     | 
    
         
             
                  request :bravo
         
     | 
| 
         @@ -28,7 +25,6 @@ describe OmfRc::ResourceProxyDSL do 
     | 
|
| 
       28 
25 
     | 
    
         
             
              describe "when included by modules to define resource proxy functionalities" do
         
     | 
| 
       29 
26 
     | 
    
         
             
                it "must be able to register the modules" do
         
     | 
| 
       30 
27 
     | 
    
         
             
                  OmfRc::ResourceFactory.proxy_list.must_include :mock_proxy
         
     | 
| 
       31 
     | 
    
         
            -
                  OmfRc::ResourceFactory.utility_list.must_include :mock_utility
         
     | 
| 
       32 
28 
     | 
    
         
             
                end
         
     | 
| 
       33 
29 
     | 
    
         | 
| 
       34 
30 
     | 
    
         
             
                it "must be able to define methods" do
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'mock_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            mock_execute(fixture("iw/help"), "iw help")
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            require 'omf_rc/util/iw'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            describe OmfRc::Util::Iw do
         
     | 
| 
      
 9 
     | 
    
         
            +
              describe "when included in the resource instance" do
         
     | 
| 
      
 10 
     | 
    
         
            +
                before do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  module OmfRc::ResourceProxy::IwTest
         
     | 
| 
      
 12 
     | 
    
         
            +
                    include OmfRc::ResourceProxyDSL
         
     | 
| 
      
 13 
     | 
    
         
            +
                    register_proxy :iw_test
         
     | 
| 
      
 14 
     | 
    
         
            +
                    utility :iw
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                after do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  mock_verify_execute
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                it "must provide features defined in proxy" do
         
     | 
| 
      
 23 
     | 
    
         
            +
                  %w(request_link configure_name configure_channel configure_bitrates).each do |m|
         
     | 
| 
      
 24 
     | 
    
         
            +
                    OmfRc::Util::Iw.method_defined?(m).must_equal true
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                it "could request properties of the wifi device" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  mock_execute(fixture("iw/link"), "iw wlan00 link")
         
     | 
| 
      
 30 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:iw_test, hrn: 'wlan00').request_link.keys.must_include "ssid"
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                it "could configure the device's prorperty" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  mock_execute(nil, /iw wlan00 set */)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:iw_test, hrn: 'wlan00').configure_power_save.must_be_nil
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'mock_helper'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'omf_rc/util/mod'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe OmfRc::Util::Mod do
         
     | 
| 
      
 6 
     | 
    
         
            +
              describe "when included in the resource instance" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                before do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  module OmfRc::ResourceProxy::ModTest
         
     | 
| 
      
 9 
     | 
    
         
            +
                    include OmfRc::ResourceProxyDSL
         
     | 
| 
      
 10 
     | 
    
         
            +
                    register_proxy :mod_test
         
     | 
| 
      
 11 
     | 
    
         
            +
                    utility :mod
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                after do
         
     | 
| 
      
 16 
     | 
    
         
            +
                  mock_verify_execute
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                it "will find out a list of modules" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  mock_execute(fixture("lsmod"), "lsmod")
         
     | 
| 
      
 21 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:mod_test).request_modules.must_include "kvm"
         
     | 
| 
      
 22 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:mod_test).request_modules.wont_include "Module"
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                it "could load a module" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  mock_execute(nil, /modprobe */)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  OmfRc::ResourceFactory.new(:mod_test).configure_load_module('magic_module').must_be_nil
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: omf_rc
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 6.0.0.pre. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 6.0.0.pre.5
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 6
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-07-17 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: minitest
         
     | 
| 
         @@ -88,10 +88,17 @@ files: 
     | 
|
| 
       88 
88 
     | 
    
         
             
            - lib/omf_rc/util/package.rb
         
     | 
| 
       89 
89 
     | 
    
         
             
            - lib/omf_rc/version.rb
         
     | 
| 
       90 
90 
     | 
    
         
             
            - omf_rc.gemspec
         
     | 
| 
      
 91 
     | 
    
         
            +
            - test/fixture/iw/help
         
     | 
| 
      
 92 
     | 
    
         
            +
            - test/fixture/iw/link
         
     | 
| 
      
 93 
     | 
    
         
            +
            - test/fixture/lsmod
         
     | 
| 
      
 94 
     | 
    
         
            +
            - test/mock_helper.rb
         
     | 
| 
       91 
95 
     | 
    
         
             
            - test/omf_rc/deferred_process_spec.rb
         
     | 
| 
       92 
96 
     | 
    
         
             
            - test/omf_rc/resource_factory_spec.rb
         
     | 
| 
       93 
97 
     | 
    
         
             
            - test/omf_rc/resource_proxy/abstract_resource_spec.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - test/omf_rc/resource_proxy/node_spec.rb
         
     | 
| 
       94 
99 
     | 
    
         
             
            - test/omf_rc/resource_proxy_dsl_spec.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - test/omf_rc/util/iw_spec.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - test/omf_rc/util/mod_spec.rb
         
     | 
| 
       95 
102 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
       96 
103 
     | 
    
         
             
            homepage: https://www.mytestbed.net
         
     | 
| 
       97 
104 
     | 
    
         
             
            licenses: []
         
     | 
| 
         @@ -113,9 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       113 
120 
     | 
    
         
             
                  version: 1.3.1
         
     | 
| 
       114 
121 
     | 
    
         
             
            requirements: []
         
     | 
| 
       115 
122 
     | 
    
         
             
            rubyforge_project: omf_rc
         
     | 
| 
       116 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 123 
     | 
    
         
            +
            rubygems_version: 1.8.24
         
     | 
| 
       117 
124 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       118 
125 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       119 
126 
     | 
    
         
             
            summary: OMF resource controller
         
     | 
| 
       120 
127 
     | 
    
         
             
            test_files: []
         
     | 
| 
       121 
     | 
    
         
            -
            has_rdoc: 
         
     |