Added composites for the Ironic project
* Added base composite * Added invididual composites for each API * Added project level composite Change-Id: Idc2fc43fb033b4f1124586a77eee7642637ed1f0
This commit is contained in:
parent
c3c704e191
commit
628a3111de
26
cloudcafe/bare_metal/chassis/composites.py
Normal file
26
cloudcafe/bare_metal/chassis/composites.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
Copyright 2014 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 cloudcafe.bare_metal.common.composites import BaseBareMetalComposite
|
||||
from cloudcafe.bare_metal.chassis.client import ChassisClient
|
||||
|
||||
|
||||
class ChassisComposite(BaseBareMetalComposite):
|
||||
|
||||
def __init__(self, auth_composite):
|
||||
super(ChassisComposite, self).__init__(auth_composite)
|
||||
self.client = ChassisClient(
|
||||
**self.bare_metal_auth_composite.client_args)
|
21
cloudcafe/bare_metal/common/composites.py
Normal file
21
cloudcafe/bare_metal/common/composites.py
Normal file
@ -0,0 +1,21 @@
|
||||
"""
|
||||
Copyright 2014 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.
|
||||
"""
|
||||
|
||||
|
||||
class BaseBareMetalComposite(object):
|
||||
|
||||
def __init__(self, auth_composite):
|
||||
self.bare_metal_auth_composite = auth_composite
|
65
cloudcafe/bare_metal/composites.py
Normal file
65
cloudcafe/bare_metal/composites.py
Normal file
@ -0,0 +1,65 @@
|
||||
"""
|
||||
Copyright 2014 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 cloudcafe.auth.config import UserAuthConfig, UserConfig
|
||||
from cloudcafe.auth.provider import MemoizedAuthServiceComposite
|
||||
from cloudcafe.bare_metal.chassis.composites import ChassisComposite
|
||||
from cloudcafe.bare_metal.config import MarshallingConfig, \
|
||||
BareMetalEndpointConfig
|
||||
from cloudcafe.bare_metal.drivers.composites import DriversComposite
|
||||
from cloudcafe.bare_metal.nodes.composites import NodesComposite
|
||||
from cloudcafe.bare_metal.ports.composites import PortsComposite
|
||||
|
||||
|
||||
class _BareMetalAuthComposite(MemoizedAuthServiceComposite):
|
||||
_auth_endpoint_config = UserAuthConfig
|
||||
_auth_user_config = UserConfig
|
||||
_bare_metal_endpoint_config = BareMetalEndpointConfig
|
||||
|
||||
def __init__(self):
|
||||
self.metal_endpoint_config = self._bare_metal_endpoint_config()
|
||||
self.marshalling_config = MarshallingConfig()
|
||||
|
||||
super(_BareMetalAuthComposite, self).__init__(
|
||||
service_name=self.metal_endpoint_config.bare_metal_endpoint_name,
|
||||
region=self.metal_endpoint_config.region,
|
||||
endpoint_config=self._auth_endpoint_config(),
|
||||
user_config=self._auth_user_config())
|
||||
|
||||
self.bare_metal_url = self.public_url
|
||||
|
||||
if self.metal_endpoint_config.bare_metal_endpoint_url:
|
||||
self.bare_metal_url = '{0}/{1}'.format(
|
||||
self.metal_endpoint_config.bare_metal_endpoint_url,
|
||||
self.tenant_id)
|
||||
|
||||
self.client_args = {
|
||||
'url': self.bare_metal_url,
|
||||
'auth_token': self.token_id,
|
||||
'serialize_format': self.marshalling_config.serializer,
|
||||
'deserialize_format': self.marshalling_config.deserializer}
|
||||
|
||||
|
||||
class BareMetalComposite(object):
|
||||
_auth_composite = _BareMetalAuthComposite
|
||||
|
||||
def __init__(self):
|
||||
auth_composite = self._auth_composite()
|
||||
self.user = auth_composite._auth_user_config
|
||||
self.chassis = ChassisComposite(auth_composite)
|
||||
self.nodes = NodesComposite(auth_composite)
|
||||
self.drivers = DriversComposite(auth_composite)
|
||||
self.ports = PortsComposite(auth_composite)
|
26
cloudcafe/bare_metal/drivers/composites.py
Normal file
26
cloudcafe/bare_metal/drivers/composites.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
Copyright 2014 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 cloudcafe.bare_metal.common.composites import BaseBareMetalComposite
|
||||
from cloudcafe.bare_metal.drivers.client import DriversClient
|
||||
|
||||
|
||||
class DriversComposite(BaseBareMetalComposite):
|
||||
|
||||
def __init__(self, auth_composite):
|
||||
super(DriversComposite, self).__init__(auth_composite)
|
||||
self.client = DriversClient(
|
||||
**self.bare_metal_auth_composite.client_args)
|
26
cloudcafe/bare_metal/nodes/composites.py
Normal file
26
cloudcafe/bare_metal/nodes/composites.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
Copyright 2014 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 cloudcafe.bare_metal.common.composites import BaseBareMetalComposite
|
||||
from cloudcafe.bare_metal.nodes.client import NodesClient
|
||||
|
||||
|
||||
class NodesComposite(BaseBareMetalComposite):
|
||||
|
||||
def __init__(self, auth_composite):
|
||||
super(NodesComposite, self).__init__(auth_composite)
|
||||
self.client = NodesClient(
|
||||
**self.bare_metal_auth_composite.client_args)
|
26
cloudcafe/bare_metal/ports/composites.py
Normal file
26
cloudcafe/bare_metal/ports/composites.py
Normal file
@ -0,0 +1,26 @@
|
||||
"""
|
||||
Copyright 2014 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 cloudcafe.bare_metal.common.composites import BaseBareMetalComposite
|
||||
from cloudcafe.bare_metal.ports.client import PortsClient
|
||||
|
||||
|
||||
class PortsComposite(BaseBareMetalComposite):
|
||||
|
||||
def __init__(self, auth_composite):
|
||||
super(PortsComposite, self).__init__(auth_composite)
|
||||
self.client = PortsClient(
|
||||
**self.bare_metal_auth_composite.client_args)
|
Loading…
Reference in New Issue
Block a user