summaryrefslogtreecommitdiff
path: root/azurelinuxagent/protocol/protocolFactory.py
diff options
context:
space:
mode:
authorBen Howard <ben.howard@ubuntu.com>2016-02-08 16:33:07 -0700
committerusd-importer <ubuntu-server@lists.ubuntu.com>2016-02-09 00:59:05 +0000
commita00729ff7421b3661e8b1a1e0fa46393379f2e96 (patch)
tree4563b927e3a57446a4a928a72a92d72c9ad4f6e6 /azurelinuxagent/protocol/protocolFactory.py
parent53f54030cae2de3d5fa474a61fe51f16c7a07c79 (diff)
downloadvyos-walinuxagent-a00729ff7421b3661e8b1a1e0fa46393379f2e96.tar.gz
vyos-walinuxagent-a00729ff7421b3661e8b1a1e0fa46393379f2e96.zip
Import patches-unapplied version 2.1.3-0ubuntu1 to ubuntu/xenial-proposed
Imported using git-ubuntu import. Changelog parent: 53f54030cae2de3d5fa474a61fe51f16c7a07c79 New changelog entries: * New upstream release (LP: #1543359): - Bug fixes for extension handling - Feature enablement for AzureStack.
Diffstat (limited to 'azurelinuxagent/protocol/protocolFactory.py')
-rw-r--r--azurelinuxagent/protocol/protocolFactory.py114
1 files changed, 0 insertions, 114 deletions
diff --git a/azurelinuxagent/protocol/protocolFactory.py b/azurelinuxagent/protocol/protocolFactory.py
deleted file mode 100644
index 0bf6e52..0000000
--- a/azurelinuxagent/protocol/protocolFactory.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# Microsoft Azure Linux Agent
-#
-# Copyright 2014 Microsoft Corporation
-#
-# 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.
-#
-# Requires Python 2.4+ and Openssl 1.0+
-#
-import os
-import traceback
-import threading
-import azurelinuxagent.logger as logger
-from azurelinuxagent.future import text
-import azurelinuxagent.utils.fileutil as fileutil
-from azurelinuxagent.utils.osutil import OSUTIL
-from azurelinuxagent.protocol.common import *
-from azurelinuxagent.protocol.v1 import WireProtocol
-from azurelinuxagent.protocol.v2 import MetadataProtocol
-
-WIRE_SERVER_ADDR_FILE_NAME = "WireServer"
-
-def get_wire_protocol_endpoint():
- path = os.path.join(OSUTIL.get_lib_dir(), WIRE_SERVER_ADDR_FILE_NAME)
- try:
- endpoint = fileutil.read_file(path)
- except IOError as e:
- raise ProtocolNotFound("Wire server endpoint not found: {0}".format(e))
-
- if endpoint is None:
- raise ProtocolNotFound("Wire server endpoint is None")
-
- return endpoint
-
-def detect_wire_protocol():
- endpoint = get_wire_protocol_endpoint()
-
- OSUTIL.gen_transport_cert()
- protocol = WireProtocol(endpoint)
- protocol.initialize()
- logger.info("Protocol V1 found.")
- return protocol
-
-def detect_metadata_protocol():
- protocol = MetadataProtocol()
- protocol.initialize()
-
- logger.info("Protocol V2 found.")
- return protocol
-
-def detect_available_protocols(prob_funcs=[detect_wire_protocol,
- detect_metadata_protocol]):
- available_protocols = []
- for probe_func in prob_funcs:
- try:
- protocol = probe_func()
- available_protocols.append(protocol)
- except ProtocolNotFound as e:
- logger.info(text(e))
- return available_protocols
-
-def detect_default_protocol():
- logger.info("Detect default protocol.")
- available_protocols = detect_available_protocols()
- return choose_default_protocol(available_protocols)
-
-def choose_default_protocol(protocols):
- if len(protocols) > 0:
- return protocols[0]
- else:
- raise ProtocolNotFound("No available protocol detected.")
-
-def get_wire_protocol():
- endpoint = get_wire_protocol_endpoint()
- return WireProtocol(endpoint)
-
-def get_metadata_protocol():
- return MetadataProtocol()
-
-def get_available_protocols(getters=[get_wire_protocol, get_metadata_protocol]):
- available_protocols = []
- for getter in getters:
- try:
- protocol = getter()
- available_protocols.append(protocol)
- except ProtocolNotFound as e:
- logger.info(text(e))
- return available_protocols
-
-class ProtocolFactory(object):
- def __init__(self):
- self._protocol = None
- self._lock = threading.Lock()
-
- def get_default_protocol(self):
- if self._protocol is None:
- self._lock.acquire()
- if self._protocol is None:
- available_protocols = get_available_protocols()
- self._protocol = choose_default_protocol(available_protocols)
- self._lock.release()
-
- return self._protocol
-
-FACTORY = ProtocolFactory()