ec721c7e5c
This change adds core library classes necessary to work with cinder volumes: Volume is the base class for cinder volume implementations. It defines the interface for volumes. The most important methods of it are "deploy" to deploy the volume and "attachTo" that returns a HOT snippet to attach the volume to Instance CinderVolume represents a new volume. The class wraps OS::Cinder::Volume Heat resource. ExistingCinderVolume is a Volume implementation for volumes created outside of Murano. CinderVolumeBackup and CinderVolumeSnapshot are adapter classes to wrap around Cinder backups and snapshots using their ID. In addition new property "volumes" was added to the Instance class. It is a mapping of a mounting path to Volume implementations that the Instance must be attached to. Because the mapping can be empty (or omitted) new property doesn't break backward compatibility. This commit doesn't has boot from volume functionality that need to be designed separately. Implements blueprint: cinder-volumes-support Change-Id: I8ff7f8e4b48e7fb8112271a642cac703db0963aa
57 lines
1.3 KiB
YAML
57 lines
1.3 KiB
YAML
# 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.
|
|
|
|
Namespaces:
|
|
=: io.murano.resources
|
|
|
|
|
|
Name: Volume
|
|
|
|
|
|
Properties:
|
|
openstackId:
|
|
Contract: $.string()
|
|
Usage: Out
|
|
|
|
|
|
Methods:
|
|
deploy:
|
|
|
|
getRef:
|
|
|
|
releaseResources:
|
|
|
|
.destroy:
|
|
Body:
|
|
- $.releaseResources()
|
|
|
|
attachTo:
|
|
Arguments:
|
|
- instance:
|
|
Contract: $.class(Instance).notNull()
|
|
- path:
|
|
Contract: $.string().notNull()
|
|
Body:
|
|
- $.deploy()
|
|
- $resourceName: format('vol-attachment-{0}-{1}', id($), $instance.name)
|
|
- Return:
|
|
template:
|
|
resources:
|
|
$resourceName:
|
|
type: 'OS::Cinder::VolumeAttachment'
|
|
properties:
|
|
instance_uuid: $instance.getRef()
|
|
mountpoint: $path
|
|
volume_id: $.getRef()
|
|
instanceResources: [$resourceName]
|
|
instanceOutputs: []
|