2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.openecomp.appc.adapter.iaas.impl;
27 import java.util.regex.Matcher;
28 import java.util.regex.Pattern;
31 * This class is used to parse the VM URL returned from OpenStack and extract all of the constituent parts.
36 * The regular expression pattern used to parse the URL. Capturing groups are used to identify and extract the
37 * various component parts of the URL.
39 private static Pattern pattern = Pattern
40 .compile("(\\p{Alnum}+)://([^/:]+)(?::([0-9]+))?/v2/([^/]+)/servers/([^/]+)");
43 * The URL scheme or protocol, such as HTTP or HTTPS
45 private String scheme;
48 * The host name or ip address
53 * The port number, or null if no port is defined
60 private String tenantId;
65 private String serverId;
68 * A private default constructor prevents instantiation by any method other than the factory method
70 * @see #parseURL(String)
77 * This static method is used to parse the provided server URL string and return a parse results object (VMURL)
78 * which represents the state of the parse.
81 * The server URL to be parsed
82 * @return The VMURL parse results object, or null if the URL was not valid or null.
84 public static VMURL parseURL(String serverUrl) {
86 if (serverUrl != null) {
87 Matcher matcher = pattern.matcher(serverUrl.trim());
88 if (matcher.matches()) {
90 obj.scheme = matcher.group(1);
91 obj.host = matcher.group(2);
92 obj.port = matcher.group(3);
93 obj.tenantId = matcher.group(4);
94 obj.serverId = matcher.group(5);
102 * @return The URL scheme
104 public String getScheme() {
109 * @return The URL host
111 public String getHost() {
116 * @return The URL port, or null if no port was defined
118 public String getPort() {
123 * @return The tenant id
125 public String getTenantId() {
130 * @return The server ID
132 public String getServerId() {
137 public String toString() {
138 return String.format("%s://%s:%s/%s/servers/%s", scheme, host, port, tenantId, serverId);