Files
python-fuelclient/fuelclient/v1/environment.py
Vitalii Myhal 820c7c488f Introduced command 'env redeploy' in v2 version of fuelclient
Example: `fuel2 env redeploy <env_id>`

Fixed deployment tests.
Fuel-web repo has been changed from 'stackforge' to 'openstack'.

Partial-Bug: 1540558
Change-Id: I6bc18ff672bc119c523841033fde4bbacb9290fd
Depends-On: Ibc89fdbfbd0a36a890412cd8e861d35bcf930690
2016-03-27 21:28:43 -05:00

110 lines
3.5 KiB
Python

# Copyright 2015 Mirantis, Inc.
#
# 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 fuelclient.cli import error
from fuelclient import objects
from fuelclient.v1 import base_v1
class EnvironmentClient(base_v1.BaseV1Client):
_entity_wrapper = objects.Environment
_updatable_attributes = ('name',)
def create(self, name, release_id, net_segment_type):
supported_nst = ('gre', 'vlan', 'tun')
if net_segment_type not in supported_nst:
msg = ('Network segmentation type should be one '
'of {0}'.format(' '.join(supported_nst)))
raise error.BadDataException(msg)
env = self._entity_wrapper.create(name, release_id, net_segment_type)
return env.data
def update(self, environment_id, **kwargs):
allowed_changes = {}
extra_args = {}
for i in kwargs:
if i in self._updatable_attributes:
allowed_changes[i] = kwargs[i]
else:
extra_args[i] = kwargs[i]
if extra_args != {}:
msg = 'Only {0} are updatable'.format(self._updatable_attributes)
raise error.BadDataException(msg)
env = self._entity_wrapper(obj_id=environment_id)
env.set(allowed_changes)
return env.data
def delete_by_id(self, environment_id):
env_obj = self._entity_wrapper(obj_id=environment_id)
env_obj.delete()
def add_nodes(self, environment_id, nodes, roles):
env = self._entity_wrapper(obj_id=environment_id)
nodes = [objects.Node(obj_id=n_id) for n_id in nodes]
env.assign(nodes, roles)
def deploy_changes(self, environment_id):
env = self._entity_wrapper(obj_id=environment_id)
deploy_task = env.deploy_changes()
return deploy_task.id
def redeploy_changes(self, environment_id):
env = self._entity_wrapper(obj_id=environment_id)
redeploy_task = env.redeploy_changes()
return redeploy_task.id
def spawn_vms(self, environment_id):
env = self._entity_wrapper(obj_id=environment_id)
return env.spawn_vms()
def upload_network_template(self, environment_id,
file_path=None):
env = self._entity_wrapper(environment_id)
network_template_data = env.read_network_template_data_from_file(
file_path=file_path)
env.set_network_template_data(network_template_data)
file_path = env.serializer.prepare_path(file_path)
return file_path
def download_network_template(self, environment_id, directory=None):
env = self._entity_wrapper(environment_id)
template_data = env.get_network_template_data()
file_path = env.write_network_template_data(
template_data,
directory=directory)
return file_path
def delete_network_template(self, environment_id):
env = self._entity_wrapper(environment_id)
env.delete_network_template_data()
def get_client():
return EnvironmentClient()