Add discovery

This commit is contained in:
Evgeniy L 2015-04-02 16:55:41 -07:00
parent 2502f274e5
commit 7428f2c18e
4 changed files with 42 additions and 3 deletions

4
examples/nodes_list.yaml Normal file
View File

@ -0,0 +1,4 @@
- id: 6176aaa2-d97f-11e4-8dbe-080027c2ffdb
ip: 127.0.0.1
ssh_port: 22
ssh_key: .vagrant/machines/default/virtualbox/private_key

View File

@ -27,6 +27,7 @@ import argparse
import yaml
from solar import utils
from solar.extensions.discovery import Discovery
from solar.core import ansible
from solar.interfaces.db import Storage
from solar.third_party.dir_dbm import DirDBM
@ -54,8 +55,7 @@ class Cmd(object):
required=True)
parser.add_argument(
'-t', '--tags', nargs='+',
help='Identifier or resource'
)
help='Identifier or resource')
parser = self.subparser.add_parser('prepare')
parser.set_defaults(func=getattr(self, 'prepare'))
@ -88,9 +88,15 @@ class Cmd(object):
'--resource',
required=True)
parser = self.subparser.add_parser('discover')
parser.set_defaults(func=getattr(self, 'discover'))
parser = self.subparser.add_parser('clear')
parser.set_defaults(func=getattr(self, 'clear'))
def discover(self, args):
Discovery({'id': 'discovery'}).execute(self.dbm)
def parse(self, args):
parsed = self.parser.parse_args(args)
return parsed.func(parsed)

View File

@ -16,7 +16,11 @@ class BaseResource(object):
@property
def inventory(self):
"""Return data that will be used for inventory"""
return {self.uid: self.config.get('input', {})}
return {self.uid: self.input}
@property
def input(self):
return self.config.get('input', {})
def execute(self, action):
"""Return data that will be used by orchestration framework"""

View File

@ -0,0 +1,25 @@
import io
import os
import yaml
from solar import utils
from solar.extensions import base
class Discovery(base.BaseResource):
FILE_PATH = os.path.join(
os.path.dirname(__file__), '..', '..', '..',
'examples', 'nodes_list.yaml')
def execute(self, db):
with io.open(self.FILE_PATH) as f:
nodes = yaml.load(f)
for node in nodes:
node['tags'] = []
db['node_list'] = yaml.dump(nodes, default_flow_style=False)
return nodes