Add discovery
This commit is contained in:
parent
2502f274e5
commit
7428f2c18e
4
examples/nodes_list.yaml
Normal file
4
examples/nodes_list.yaml
Normal 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
|
@ -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)
|
||||
|
@ -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"""
|
||||
|
25
solar/solar/extensions/discovery.py
Normal file
25
solar/solar/extensions/discovery.py
Normal 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
|
Loading…
x
Reference in New Issue
Block a user