blob: c7814d1bf978adbd56729dcb1485b88062856b84 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you 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.
class CIMI::Service::CloudEntryPoint < CIMI::Service::Base
metadata :driver, :type => 'text'
metadata :provider, :type => 'text'
def initialize(context)
super(context, :values => {
:name => context.driver.name,
:description => "Cloud Entry Point for the Deltacloud #{context.driver.name} driver",
:driver => context.driver.name,
:provider => context.current_provider,
:id => context.cloudEntryPoint_url,
:base_uri => context.base_uri + "/",
:created => Time.now.xmlschema
})
remove_unsupported_collections!(context)
expand_collections!(context)
end
def remove_unsupported_collections!(context)
each_collection do |m, c|
remove_collection(c.collection_name) && next if c.operation(:index).nil?
remove_collection(c.collection_name) && next if c.collection_name == :cloudEntryPoint
index_operation_capability = c.operation(:index).required_capability
if m.settings.respond_to?(:capability) and !m.settings.capability(index_operation_capability)
remove_collection(c.collection_name)
end
end
end
def expand_collections!(context)
each_collection do |m, c|
if context.expand? c.collection_name.to_s.camelize(:lower).to_sym
self.model.attribute_values[c.collection_name] = \
SERVICES[c.collection_name.to_s].list(context)
end
end
end
def remove_collection(collection_name)
self.model.attribute_values.delete(collection_name)
end
def each_collection(&block)
CIMI::Collections.modules(:cimi).each do |m|
m.collections.each do |c|
yield m,c
end
end
end
end