def opencenter_endpoint(chef, name='test', os='ubuntu'): validate_environment(chef, name=name, os=os) env = env_format % (name, os) query = "in_use:\"server\" AND chef_environment:%s" % env server = next(Node(node['name']) for node in Search('node').query(query)) ep_url = "https://%s:8443" % server['ipaddress'] return OpenCenterEndpoint(ep_url, user="******", password="******")
def _update_task(self, result, input_data): task_id = input_data['id'] endpoint_url = global_config['endpoints']['admin'] ep = OpenCenterEndpoint(endpoint_url) task = ep.tasks[task_id] task._request_get() task.state = 'done' task.result = result task.save()
def __init__(self, endpoint='http://localhost:8080', logger=None, parent_task_id=None, adventure_globals=None): self.endpoint = OpenCenterEndpoint(endpoint) self.logger = logger self.parent_task_id = parent_task_id self.api = db_api.api_from_endpoint(endpoint) self.adventure_globals = adventure_globals if not adventure_globals: self.adventure_globals = {} if not logger: self.logger = logging.getLogger() opencenter.backends.load()
def _maybe_init(self): if self.endpoint: return True else: LOG.info('Connecting to endpoint') try: self.endpoint = OpenCenterEndpoint(self.endpoint_uri) except ConnectionError: return False except KeyboardInterrupt: raise if not self.host_id: # try to find our host ID from the endpoint LOG.info('Initial connection: fetching host ID') #TODO: Fix up client to support whoami in a more #reasonable manner and fix this code up root = self.endpoint.nodes.filter( 'facts.parent_id = None and name = "workspace"').first() resp = root.whoami(hostname=self.name).json try: host_id = resp['node_id'] except KeyError: LOG.error('Unable to get node ID: %s' % resp['message']) return False reg_file = '.'.join((self.hostidfile, 'registering')) dirs = reg_file.rpartition(os.sep)[0] try: os.makedirs(dirs) except OSError: pass with open(reg_file, 'wb') as f: f.write(str(host_id)) resp = root.whoami(node_id=host_id).json try: node = resp['node'] except KeyError: LOG.error('Unable to get node ID: %s' % resp['message']) return False if node['id'] == host_id: os.rename(reg_file, self.hostidfile) self.host_id = node['id'] else: LOG.error('Node ID mismatch.') return False # update the module list self.producer_lock.acquire() task = {'action': 'modules.list', 'payload': {}, 'id': -1} self.pending_tasks.append(task) self.producer_condition.notify() LOG.debug('added module_list task to work queue') self.producer_lock.release() self.producer_lock.acquire() task = {'action': 'modules.actions', 'payload': {}, 'id': -1} self.pending_tasks.append(task) self.producer_condition.notify() LOG.debug('added module_list task to work queue') self.producer_lock.release() return True