vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / aria / utils / uris.py
1 # Licensed to the Apache Software Foundation (ASF) under one or more
2 # contributor license agreements.  See the NOTICE file distributed with
3 # this work for additional information regarding copyright ownership.
4 # The ASF licenses this file to You under the Apache License, Version 2.0
5 # (the "License"); you may not use this file except in compliance with
6 # the License.  You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 """
17 URI utilities.
18 """
19
20 import os
21 import urlparse
22
23
24 _IS_WINDOWS = (os.name == 'nt')
25
26
27 def as_file(uri):
28     """
29     If the URI is a file (either the ``file`` scheme or no scheme), then returns the normalized
30     path. Otherwise, returns ``None``.
31     """
32
33     if _IS_WINDOWS:
34         # We need this extra check in Windows before urlparse because paths might have a drive
35         # prefix, e.g. "C:" which will be considered a scheme for urlparse below
36         path = uri.replace('/', '\\')
37         if os.path.exists(path):
38             return os.path.normpath(path)
39
40     url = urlparse.urlparse(uri)
41     scheme = url.scheme
42     if (not scheme) or (scheme == 'file'):
43         path = url.path
44         if _IS_WINDOWS:
45             path = path.replace('/', '\\')
46         return os.path.normpath(path)
47
48     return None