194 lines
5.1 KiB
Python
194 lines
5.1 KiB
Python
# 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 oslo_serialization import jsonutils
|
|
from oslo_utils import timeutils as tu
|
|
from oslo_utils import uuidutils
|
|
|
|
from senlin.db.sqlalchemy import api as db_api
|
|
from senlin.engine import parser
|
|
|
|
|
|
sample_profile = """
|
|
name: test_profile_name
|
|
type: my_test_profile_type
|
|
spec:
|
|
template:
|
|
heat_template_version: "2013-05-23"
|
|
resources:
|
|
myrandom: OS::Heat::RandomString
|
|
files:
|
|
myfile: contents
|
|
"""
|
|
|
|
sample_action = """
|
|
name: test_cluster_create_action
|
|
target: cluster_001
|
|
action: create
|
|
cause: User Initiate
|
|
cluster_id: cluster_001_id
|
|
timeout: 60
|
|
control: READY
|
|
status: INIT
|
|
status_reason: Just Initialized
|
|
inputs:
|
|
min_size: 1
|
|
max_size: 10
|
|
pause_time: PT10M
|
|
"""
|
|
|
|
|
|
UUIDs = (UUID1, UUID2, UUID3) = sorted([uuidutils.generate_uuid()
|
|
for x in range(3)])
|
|
|
|
|
|
def create_profile(context, profile=sample_profile, **kwargs):
|
|
data = parser.simple_parse(profile)
|
|
data['user'] = context.user_id
|
|
data['project'] = context.project_id
|
|
data['domain'] = context.domain_id
|
|
data.update(kwargs)
|
|
return db_api.profile_create(context, data)
|
|
|
|
|
|
def create_cluster(ctx, profile, **kwargs):
|
|
values = {
|
|
'name': 'db_test_cluster_name',
|
|
'profile_id': profile.id,
|
|
'user': ctx.user_id,
|
|
'project': ctx.project_id,
|
|
'domain': 'unknown',
|
|
'parent': None,
|
|
'next_index': 1,
|
|
'timeout': 60,
|
|
'desired_capacity': 0,
|
|
'init_at': tu.utcnow(True),
|
|
'status': 'INIT',
|
|
'status_reason': 'Just Initialized',
|
|
'meta_data': {},
|
|
'dependents': {},
|
|
'config': {},
|
|
}
|
|
values.update(kwargs)
|
|
if 'project' in kwargs:
|
|
values.update({'project': kwargs.get('project')})
|
|
return db_api.cluster_create(ctx, values)
|
|
|
|
|
|
def create_node(ctx, cluster, profile, **kwargs):
|
|
if cluster:
|
|
cluster_id = cluster.id
|
|
index = db_api.cluster_next_index(ctx, cluster_id)
|
|
else:
|
|
cluster_id = ''
|
|
index = -1
|
|
|
|
values = {
|
|
'name': 'test_node_name',
|
|
'physical_id': UUID1,
|
|
'cluster_id': cluster_id,
|
|
'profile_id': profile.id,
|
|
'project': ctx.project_id,
|
|
'index': index,
|
|
'role': None,
|
|
'created_at': None,
|
|
'updated_at': None,
|
|
'status': 'ACTIVE',
|
|
'status_reason': 'create complete',
|
|
'meta_data': jsonutils.loads('{"foo": "123"}'),
|
|
'data': jsonutils.loads('{"key1": "value1"}'),
|
|
'dependents': {},
|
|
'tainted': False,
|
|
}
|
|
values.update(kwargs)
|
|
return db_api.node_create(ctx, values)
|
|
|
|
|
|
def create_webhook(ctx, obj_id, obj_type, action, **kwargs):
|
|
values = {
|
|
'name': 'test_webhook_name',
|
|
'user': ctx.user_id,
|
|
'project': ctx.project_id,
|
|
'domain': ctx.domain_id,
|
|
'created_at': None,
|
|
'obj_id': obj_id,
|
|
'obj_type': obj_type,
|
|
'action': action,
|
|
'credential': None,
|
|
'params': None,
|
|
}
|
|
values.update(kwargs)
|
|
return db_api.webhook_create(ctx, values)
|
|
|
|
|
|
def create_action(ctx, **kwargs):
|
|
values = {
|
|
'context': kwargs.get('context'),
|
|
'description': 'Action description',
|
|
'target': kwargs.get('target'),
|
|
'action': kwargs.get('action'),
|
|
'cause': 'Reason for action',
|
|
'owner': kwargs.get('owner'),
|
|
'interval': -1,
|
|
'inputs': {'key': 'value'},
|
|
'outputs': {'result': 'value'},
|
|
'depends_on': [],
|
|
'depended_by': []
|
|
}
|
|
values.update(kwargs)
|
|
return db_api.action_create(ctx, values)
|
|
|
|
|
|
def create_policy(ctx, **kwargs):
|
|
values = {
|
|
'name': 'test_policy',
|
|
'type': 'senlin.policy.scaling',
|
|
'user': ctx.user_id,
|
|
'project': ctx.project_id,
|
|
'domain': ctx.domain_id,
|
|
'spec': {
|
|
'type': 'senlin.policy.scaling',
|
|
'version': '1.0',
|
|
'properties': {
|
|
'adjustment_type': 'WHATEVER',
|
|
'count': 1,
|
|
}
|
|
},
|
|
'data': None,
|
|
}
|
|
|
|
values.update(kwargs)
|
|
return db_api.policy_create(ctx, values)
|
|
|
|
|
|
def create_event(ctx, **kwargs):
|
|
values = {
|
|
'timestamp': tu.utcnow(True),
|
|
'obj_id': 'FAKE_ID',
|
|
'obj_name': 'FAKE_NAME',
|
|
'obj_type': 'CLUSTER',
|
|
'cluster_id': 'FAKE_CLUSTER',
|
|
'level': '20',
|
|
'user': ctx.user_id,
|
|
'project': ctx.project_id,
|
|
'action': 'DANCE',
|
|
'status': 'READY',
|
|
'status_reason': 'Just created.',
|
|
'meta_data': {
|
|
'air': 'polluted'
|
|
}
|
|
}
|
|
|
|
values.update(kwargs)
|
|
return db_api.event_create(ctx, values)
|