Updating meniscus supporting classes after more product changes

Change-Id: Ic08deed1eb0cab879f4c7d0a624a676bd18f7420
This commit is contained in:
John Vrbanac 2013-12-16 20:57:44 -06:00
parent 7c663ab20a
commit 904f36e581
6 changed files with 13 additions and 166 deletions

View File

@ -101,66 +101,6 @@ class TenantConfig(ConfigSectionInterface):
return self.get("profile_name")
class PairingConfig(ConfigSectionInterface):
SECTION_NAME = 'meniscus-pairing'
@property
def hostname(self):
return self.get('hostname')
@property
def coordinator_base_url(self):
return self.get('coordinator_base_url')
@property
def worker_base_url(self):
return self.get('worker_base_url')
@property
def callback(self):
return self.get('callback')
@property
def ip_v4(self):
return self.get('ip_address_v4')
@property
def ip_v6(self):
return self.get('ip_address_v6')
@property
def os_type(self):
return self.get('os_type')
@property
def memory_mb(self):
return int(self.get('memory_mb'))
@property
def arch(self):
return self.get('arch')
@property
def api_secret(self):
return self.get('api_secret')
@property
def personality(self):
return self.get('personality')
@property
def cpu_cores(self):
return int(self.get('cpu_cores'))
@property
def load_average(self):
return json_to_dict(self.get('load_average'))
@property
def disks(self):
return json_to_dict(self.get('disks'))
class CorrelationConfig(ConfigSectionInterface):
SECTION_NAME = 'meniscus-correlation'

View File

@ -57,8 +57,10 @@ class PublishingBehaviors(object):
if tenant_id is None:
tenant_id = self.tenant_id
resp = self.storage_client.find_term(name='time', value=timestamp,
size=num_messages)
resp = self.storage_client.wait_for_messages(name='time',
value=timestamp,
num=num_messages,
max_wait=2)
# Copying all of the models into a fresh list
return [model for model in resp]

View File

@ -1,57 +0,0 @@
"""
Copyright 2013 Rackspace
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from datetime import datetime
from cafe.engine.behaviors import BaseBehavior
class StatusAPIBehaviors(BaseBehavior):
def __init__(self, status_client, pairing_config):
super(StatusAPIBehaviors, self).__init__()
self.status_client = status_client
self.pairing_config = pairing_config
def update_load_average(self, worker_id, worker_token,
one, five, fifteen):
response = self.status_client.update_status(
worker_id=worker_id, worker_token=worker_token,
status='new',
os_type=self.pairing_config.os_type,
memory_mb=self.pairing_config.memory_mb,
architecture=self.pairing_config.arch,
cpu_cores=self.pairing_config.cpu_cores,
timestamp=datetime.now().isoformat(),
one=one, five=five, fifteen=fifteen,
disks={})
return response
def update_status_from_config(self, worker_id, worker_token, status=None,
os_type=None, memory_mb=None,
architecture=None, cpu_cores=None,
timestamp=None, one=None, five=None,
fifteen=None, disks=None):
response = self.status_client.update_status(
worker_id=worker_id, worker_token=worker_token,
status=status or 'new',
os_type=os_type or self.pairing_config.os_type,
memory_mb=memory_mb or self.pairing_config.memory_mb,
architecture=architecture or self.pairing_config.arch,
cpu_cores=cpu_cores or self.pairing_config.cpu_cores,
timestamp=timestamp or datetime.now().isoformat(),
one=one or 0.0, five=five or 0.0, fifteen=fifteen or 0.0,
disks=disks or {})
return response

View File

@ -34,35 +34,6 @@ class WorkerStatusClient(AutoMarshallingRestClient):
base=self.url, version=self.api_version, worker_id=worker_id)
return url
def update_status(self, worker_id, worker_token, status=None,
os_type=None, memory_mb=None, architecture=None,
cpu_cores=None, timestamp=None, one=None,
five=None, fifteen=None, disks=None):
url = self._get_remote_url(worker_id)
disk_usage = WorkerDiskUsage._dict_to_obj(disks)
load_average = WorkerLoadAverage(one, five, fifteen)
system_info = SystemInfo(
disk_usage=disk_usage,
os_type=os_type,
memory_mb=memory_mb,
architecture=architecture,
cpu_cores=cpu_cores,
load_average=load_average,
timestamp=timestamp)
req_obj = WorkerStatusUpdate(status=status, system_info=system_info)
headers = {'WORKER-TOKEN': worker_token}
resp = self.request('PUT', url, headers=headers,
request_entity=req_obj)
return resp
def direct_update(self, worker_id, worker_token, body):
"""Allows direct access for negative testing ONLY!"""
url = self._get_remote_url(worker_id)
headers = {'WORKER-TOKEN': worker_token}
return self.request('PUT', url, headers=headers)
def get_worker_status(self, worker_id):
url = '{base}/{version}/worker/{worker_id}/status'.format(
base=self.url, version=self.api_version, worker_id=worker_id)

View File

@ -13,13 +13,15 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from cafe.engine.behaviors import BaseBehavior
from cloudcafe.common.tools.datagen import random_int
from cloudcafe.meniscus.common.tools import RequestUtilities
class TenantBehaviors(object):
class TenantBehaviors(BaseBehavior):
def __init__(self, tenant_client, db_client, tenant_config, es_client):
super(TenantBehaviors, self).__init__()
self.tenant_client = tenant_client
self.db_client = db_client
self.tenant_config = tenant_config
@ -31,8 +33,12 @@ class TenantBehaviors(object):
self.db_client.auth()
for tenant_id in self.tenant_ids:
self.db_client.remove_tenant(tenant_id)
self.es_client.wait_for_index(tenant_id)
self.es_client.delete_index(tenant_id)
self.es_client.wait_for_index(tenant_id, wait=1)
if self.es_client.has_index(tenant_id):
self.es_client.delete_index(tenant_id)
else:
self._log.info('Couldn\'t find ES index to delete.')
self.db_client.disconnect()
self.tenant_ids = []

View File

@ -23,21 +23,6 @@ producer_durable=true
producer_encrypted=false
profile_name=appservers-1
[meniscus-pairing]
hostname=testhost
coordinator_base_url=<coordinator_base_url>
worker_base_url=<worker_base_url>
ip_address_v4=127.0.0.1
ip_address_v6=::1
os_type=Linux
memory_mb=1024
arch=x86_64
api_secret=<api_secret>
personality=worker
cpu_cores=4
load_average={"1": 0.2,"5": 1,"15": 0.9}
disks=[{"device":"/dev/sda1", "total": 313764528, "used": 112512436}]
[meniscus-correlation]
correlator_base_url=<correlator_base_url>
syslog_endpoint=<syslog_endpoint>