You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/06/24 10:24:26 UTC
[10/11] git commit: updated refs/heads/master to c79ab57
Revert "CLOUDSTACK-6967: Now with module!"
This reverts commit 189972bc7c9e73abff392429eda298f9f837992e.
Conflicts:
plugins/hypervisors/ovm3
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/be028974
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/be028974
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/be028974
Branch: refs/heads/master
Commit: be028974dad2ce3d147f0ea8553cd05c7977837d
Parents: fec52be
Author: Daan Hoogland <da...@onecht.net>
Authored: Tue Jun 24 10:23:49 2014 +0200
Committer: Daan Hoogland <da...@onecht.net>
Committed: Tue Jun 24 10:23:49 2014 +0200
----------------------------------------------------------------------
plugins/hypervisors/ovm3/pom.xml | 36 -
.../cloudstack/ovm3-compute/module.properties | 18 -
.../spring-ovm3-compute-context.xml | 39 -
.../ovm3-discoverer/module.properties | 18 -
.../spring-ovm3-discoverer-context.xml | 34 -
.../hypervisors/ovm3/scripts/clean_master.sh | 43 -
plugins/hypervisors/ovm3/scripts/clean_slave.sh | 33 -
.../ovm3/scripts/create_pool_cluster.py | 271 --
plugins/hypervisors/ovm3/scripts/info.py | 111 -
.../ovm3/scripts/ovs_agent_plugin/cloudstack.py | 344 --
plugins/hypervisors/ovm3/scripts/password.py | 57 -
plugins/hypervisors/ovm3/scripts/repo_pool.py | 186 -
plugins/hypervisors/ovm3/scripts/simple_pool.py | 209 --
plugins/hypervisors/ovm3/scripts/socat.sh | 2 -
plugins/hypervisors/ovm3/scripts/tail.sh | 2 -
.../ovm3/src/com/cloud/ha/Ovm3Investigator.java | 81 -
.../ovm3/hypervisor/Ovm3Discoverer.java | 411 ---
.../hypervisor/ovm3/hypervisor/Ovm3Fencer.java | 133 -
.../hypervisor/ovm3/hypervisor/Ovm3Guru.java | 65 -
.../hypervisor/ovm3/hypervisor/Ovm3Helper.java | 82 -
.../ovm3/hypervisor/Ovm3ResourceBase.java | 3211 ------------------
.../ovm3/object/CloudStackPlugin.java | 131 -
.../cloud/hypervisor/ovm3/object/Cluster.java | 162 -
.../cloud/hypervisor/ovm3/object/Common.java | 64 -
.../hypervisor/ovm3/object/Connection.java | 144 -
.../com/cloud/hypervisor/ovm3/object/Linux.java | 612 ----
.../cloud/hypervisor/ovm3/object/Network.java | 628 ----
.../com/cloud/hypervisor/ovm3/object/Ntp.java | 140 -
.../cloud/hypervisor/ovm3/object/OvmObject.java | 208 --
.../com/cloud/hypervisor/ovm3/object/Pool.java | 362 --
.../cloud/hypervisor/ovm3/object/PoolOCFS2.java | 157 -
.../cloud/hypervisor/ovm3/object/Remote.java | 68 -
.../hypervisor/ovm3/object/Repository.java | 205 --
.../hypervisor/ovm3/object/RpcTypeFactory.java | 92 -
.../hypervisor/ovm3/object/StoragePlugin.java | 876 -----
.../com/cloud/hypervisor/ovm3/object/Test.java | 546 ---
.../com/cloud/hypervisor/ovm3/object/Xen.java | 1169 -------
37 files changed, 10950 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/pom.xml
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/pom.xml b/plugins/hypervisors/ovm3/pom.xml
deleted file mode 100644
index 22c9fe0..0000000
--- a/plugins/hypervisors/ovm3/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <artifactId>cloud-plugin-hypervisor-ovm3</artifactId>
- <name>Apache CloudStack Plugin - Hypervisor OracleVM3</name>
- <parent>
- <groupId>org.apache.cloudstack</groupId>
- <artifactId>cloudstack-plugins</artifactId>
- <version>4.4.0-SNAPSHOT</version>
- <relativePath>../../pom.xml</relativePath>
- </parent>
- <dependencies>
- <dependency>
- <groupId>org.apache.cloudstack</groupId>
- <artifactId>xapi</artifactId>
- <version>${cs.xapi.version}</version>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/module.properties
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/module.properties b/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/module.properties
deleted file mode 100644
index 69e6469..0000000
--- a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/module.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-name=ovm3-compute
-parent=compute
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/spring-ovm3-compute-context.xml
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/spring-ovm3-compute-context.xml b/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/spring-ovm3-compute-context.xml
deleted file mode 100644
index 42230c9..0000000
--- a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-compute/spring-ovm3-compute-context.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
- 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.
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd"
- >
-
- <bean id="Ovm3Fencer" class="com.cloud.hypervisor.ovm3.hypervisor.Ovm3Fencer">
- <property name="name" value="Ovm3FenceBuilder" />
- </bean>
-
- <bean id="Ovm3Guru" class="com.cloud.hypervisor.ovm3.hypervisor.Ovm3Guru">
- <property name="name" value="Ovm3Guru" />
- </bean>
-
-
-</beans>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/module.properties
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/module.properties b/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/module.properties
deleted file mode 100644
index 025d4cf..0000000
--- a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/module.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-name=ovm3-discoverer
-parent=discoverer
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/spring-ovm3-discoverer-context.xml
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/spring-ovm3-discoverer-context.xml b/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/spring-ovm3-discoverer-context.xml
deleted file mode 100644
index aa76271..0000000
--- a/plugins/hypervisors/ovm3/resources/META-INF/cloudstack/ovm3-discoverer/spring-ovm3-discoverer-context.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
- 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.
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd"
- >
-
- <bean id="Ovm3Discoverer" class="com.cloud.hypervisor.ovm3.hypervisor.Ovm3Discoverer">
- <property name="name" value="Ovm3Discover" />
- </bean>
-
-</beans>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/clean_master.sh
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/clean_master.sh b/plugins/hypervisors/ovm3/scripts/clean_master.sh
deleted file mode 100755
index bbf1cd0..0000000
--- a/plugins/hypervisors/ovm3/scripts/clean_master.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-for i in `xm list | awk '{ print $1 }' | egrep -v "Name|Domain-0"`
-do
- xm destroy $i
-done
-rm /etc/ovs-agent/db/server
-rm /etc/ovs-agent/db/repository
-rm /etc/ocfs2/cluster.conf
-rm /nfsmnt/*/*.img
-rm /nfsmnt/*/.ovspoolfs
-rm /nfsmnt/*/.generic_fs_stamp
-rm /OVS/Repositories/*/.generic_fs_stamp
-rm /OVS/Repositories/*/.ovsrepo
-/etc/init.d/ovs-agent restart
-/etc/init.d/ocfs2 restart
-for i in `mount | grep cs-mgmt | awk '{ print $1 }'`
-do
- umount $i
-done
-rm -rf /OVS/Repositories/*
-rm -rf /nfsmnt/*
-ip addr del 192.168.1.230 dev c0a80100
-ip addr del 192.168.1.161 dev c0a80100
-rm /etc/sysconfig/network-scripts/ifcfg-control0
-reboot
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/clean_slave.sh
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/clean_slave.sh b/plugins/hypervisors/ovm3/scripts/clean_slave.sh
deleted file mode 100755
index 6d46859..0000000
--- a/plugins/hypervisors/ovm3/scripts/clean_slave.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-#
-# 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.
-#
-for i in `xm list | awk '{ print $1 }' | egrep -v "Name|Domain-0"`
-do
- xm destroy $i
-done
-rm /etc/ovs-agent/db/server
-rm /etc/ovs-agent/db/repository
-rm /etc/ocfs2/cluster.conf
-/etc/init.d/ovs-agent restart
-/etc/init.d/ocfs2 restart
-for i in `mount | grep cs-mgmt | awk '{ print $1 }'`
-do
- umount $i
-done
-
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/create_pool_cluster.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/create_pool_cluster.py b/plugins/hypervisors/ovm3/scripts/create_pool_cluster.py
deleted file mode 100755
index 15c9a97..0000000
--- a/plugins/hypervisors/ovm3/scripts/create_pool_cluster.py
+++ /dev/null
@@ -1,271 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import os, sys, subprocess
-from xml.dom.minidom import parseString
-
-from xmlrpclib import ServerProxy, Error
-
-server = ServerProxy("http://localhost:8899")
-
-pooledFs = 1
-normalRepo = 0
-
-try:
- if normalRepo:
- print "normal repo"
- # this litterally throws EVERYTHING away on the repo
- repoDom = parseString(server.discover_repository_db())
- for node in repoDom.getElementsByTagName('Repository'):
- repoUuid = node.attributes['Uuid']
- remoteMount = node.getElementsByTagName('Fs_location')[0].firstChild.nodeValue
- localMount = node.getElementsByTagName('Mount_point')[0].firstChild.nodeValue
-
- # there is a "strong" relation between repo's and VMs
- # onfortunately there is no reference in the vm.cfg
- # or any known info in the configuration of the VM
- # in which repo it lives....
- for dirname, dirnames, filenames in os.walk('%s/VirtualMachines/' % localMount):
- for vm in dirnames:
- print "Destroying vm: %s on repo %s" % (vm, repoUuid.value)
- try:
- mVm = server.list_vm(repoUuid.value, vm)
- if mVm != None:
- print server.stop_vm(repoUuid.value, vm)
- print server.delete_vm(repoUuid.value, vm)
- else:
- print "%s already not in repo %s" % (repoUuid.value, vm)
- except Error, v:
- print "Unable to destroy: %s" % (v)
- continue
-
- # VMs = server.list_vms()
- # for vm in VMs:
- # if vm['domid'] != '0':
- # print vm
- # print server.delete_vm(repoUuid.value, vm['uuid'])
-
- rc = server.delete_repository(repoUuid.value, True)
- # Set to false if you want to keep data: ^^^^
- print "Repository: %s" % repoUuid.value
- if (rc == None):
- print "Ok repo: %s destroyed!" % repoUuid.value
- # now unmount the FS
- # print server.unmount_repository_fs(localMount)
- else:
- print "Failed repo: %s not destroyed!" % repoUuid.value
-
- # for now only treat NFS stuff as we're testing with that..
- nfsHost='cs-mgmt'
- nfsDom = server.storage_plugin_listMountPoints(
- 'oracle.generic.NFSPlugin.GenericNFSPlugin',
- { 'status': '',
- 'admin_user': '',
- 'admin_host': '',
- 'uuid': '',
- 'total_sz': 0,
- 'admin_passwd': '',
- 'free_sz': 0,
- 'name': '',
- 'access_host': nfsHost,
- 'storage_type': 'FileSys',
- 'alloc_sz': 0,
- 'access_grps': [],
- 'used_sz': 0,
- 'storage_desc': ''
- })
- for node in nfsDom:
- props = {'status': node['status'],
- 'uuid': '',
- 'access_host': nfsHost,
- 'storage_type': 'FileSys',
- 'name': '' }
- extprops = {'status': node['status'],
- 'uuid': node['fs_uuid'],
- 'ss_uuid': '',
- 'size': 0,
- 'free_sz': '',
- 'state': 1,
- 'access_grp_names': [],
- 'access_path': nfsHost + ':' + '/volumes/cs-data/secondary',
- 'name': ''}
- # rc = server.storage_plugin_unmount('oracle.generic.NFSPlugin.GenericNFSPlugin', props, extprops, nfsMnt, True)
- # print rc
-
- nfsDom = parseString(server.discover_mounted_file_systems('nfs'))
- for node in nfsDom.getElementsByTagName('Mount'):
- nfsMnt = node.attributes['Dir'].value
- print 'Mountpoint: %s' % (nfsMnt)
- fsStamp = '%s/.generic_fs_stamp' % nfsMnt
- # remove this so we don't cock up next run
- if os.path.isfile(fsStamp):
- print "Stamp found: %s" % fsStamp
- os.unlink(fsStamp)
-
- rc = server.storage_plugin_unmount('oracle.generic.NFSPlugin.GenericNFSPlugin', props, extprops, nfsMnt, True)
- print rc
-
-
- if pooledFs:
- print "pooling"
- # pool stuff
- poolalias="ItsMyPool"
- poolmvip="192.168.1.161"
- poolfirsthost = {
- 'ip': "192.168.1.64",
- 'hn': "ovm-1",
- 'id': 0,
- 'role': 'utility,xen'
- }
- fstype="nfs"
- fstarget="cs-mgmt:/volumes/cs-data/primary"
- poolid="0004fb0000020000ba9aaf00ae5e2d73"
- clusterid="ba9aaf00ae5e2d72"
- poolfsuuid="0004fb0000050000e70fbddeb802208f"
- poolfsnfsbaseuuid="b8ca41cb-3469-4f74-a086-dddffe37dc2d"
- manageruuid="0004fb00000100000af70d20dcce7d65"
- pooluuid="0004fb0000020000ba9aaf00ae5e2d73"
- blocksize=""
- clustersize=""
- journalesize=""
-
- # o2cb is the problem.... /etc/init.d/o2cb
- # sets it's config in /etc/sysconfig/o2cb (can be removed)
- # dmsetup requires the stopping of o2cb first,
- # then the removal of the config, after which dmsetup
- # can remove the device from /dev/mapper/
- # eventually cluster cleanup can be done by removing
- # stuff from /etc/ovs-agent/db
- # also clean /etc/ocfs2/cluster.conf
- print server.create_pool_filesystem(
- fstype,
- fstarget,
- clusterid,
- poolfsuuid,
- poolfsnfsbaseuuid,
- manageruuid,
- pooluuid
- )
-
- # poolDom = server.discover_server_pool()
- # print poolDom
- # poolDom = parseString(server.discover_server_pool())
- # if poolDom.getElementsByTagName('Server_Pool'):
- # get unique id
- cluster = server.is_cluster_online()
- if cluster == True:
- print "clean up pool"
- # print server.destroy_cluster(poolfsuuid)
- # deconfigure cluster
- # print server.destroy_server_pool(poolid)
-
- if cluster == False:
- print "create_server_pool"
- # first take ownership. without an owner nothing happens
- print server.take_ownership(manageruuid, "")
- # we need to add the first host first to the pool....
- poolDom = server.discover_server_pool()
- print poolDom
- poolDom = parseString(server.discover_server_pool())
- if poolDom.getElementsByTagName('Server_Pool'):
- print server.destroy_server_pool(pooluuid)
-
- print server.create_pool_filesystem(
- fstype,
- fstarget,
- clusterid,
- poolfsuuid,
- poolfsnfsbaseuuid,
- manageruuid,
- pooluuid
- )
- print server.create_server_pool(poolalias,
- pooluuid,
- poolmvip,
- poolfirsthost['id'],
- poolfirsthost['hn'],
- poolfirsthost['ip'],
- poolfirsthost['role'])
-
- print "configure_virtual_ip"
- server.configure_virtual_ip(poolmvip, poolfirsthost['ip'])
- server.set_pool_member_ip_list(['192.168.1.64','192.168.1.65'],)
- print "configure for cluster"
- server.configure_server_for_cluster(
- {
- 'O2CB_HEARTBEAT_THRESHOLD': '61',
- 'O2CB_RECONNECT_DELAY_MS': '2000',
- 'O2CB_KEEPALIVE_DELAY_MS': '2000',
- 'O2CB_BOOTCLUSTER': clusterid,
- 'O2CB_IDLE_TIMEOUT_MS': '60000',
- 'O2CB_ENABLED': 'true',
- 'O2CB_STACK': 'o2cb'
- },
- {
- 'node': [
- {
- 'ip_port': 7777,
- 'cluster': clusterid,
- 'ip_address': poolfirsthost['ip'],
- 'name': poolfirsthost['hn'],
- 'number': poolfirsthost['id']
- }
- ],
- 'heartbeat': [
- {
- 'cluster': clusterid,
- # uppercase poolfsuuid
- 'region': '0004FB0000050000E70FBDDEB802208F'
- }
- ],
- 'cluster': [
- {
- 'heartbeat_mode': 'global',
- 'node_count': 1,
- 'name': clusterid
- }
- ]
- },
- 'nfs',
- 'cs-mgmt:/volumes/cs-data/primary',
- poolfsuuid,
- poolfsnfsbaseuuid
- )
- print "create cluster"
- server.create_cluster(poolfsuuid,)
-
- poolDom = parseString(server.discover_server_pool())
- for node in poolDom.getElementsByTagName('Server_Pool'):
- id = node.getElementsByTagName('Unique_Id')[0].firstChild.nodeValue
- alias = node.getElementsByTagName('Pool_Alias')[0].firstChild.nodeValue
- mvip = node.getElementsByTagName('Master_Virtual_Ip')[0].firstChild.nodeValue
- print "pool: %s, %s, %s" % (id, mvip, alias)
- members = node.getElementsByTagName('Member')
- for member in members:
- mip = member.getElementsByTagName('Registered_IP')[0].firstChild.nodeValue
- print "member: %s" % (mip)
-
- print server.is_cluster_online()
- print server.discover_cluster()
- print server.discover_pool_filesystem()
- print server.discover_server_pool()
- # server.destroy_server_pool(pooluuid)
-
-except Error, v:
- print "ERROR", v
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/info.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/info.py b/plugins/hypervisors/ovm3/scripts/info.py
deleted file mode 100755
index 518aaf1..0000000
--- a/plugins/hypervisors/ovm3/scripts/info.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import os, sys, subprocess, socket,fcntl, struct
-from socket import gethostname
-import errno
-from socket import error as socket_error
-from xml.dom.minidom import parseString
-
-from xmlrpclib import ServerProxy, Error
-
-def spCon(proto, auth, host, port):
- print "trying %s on %s@%s:%s" % (proto, auth, host, port)
- try:
- x=ServerProxy("%s://%s@%s:%s" % (proto, auth, host, port))
- x.echo(proto)
- return x
- except Error, v:
- return
- except socket_error, serr:
- return
-
-def getCon(auth, host, port):
- try:
- server = spCon("http", auth, host, port)
- if server:
- return server
- else:
- server = spCon("https", auth, host, port)
- except Error, v:
- print "ERROR", v
- return server
-
-def get_ip_address(ifname):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- return socket.inet_ntoa(fcntl.ioctl(
- s.fileno(),
- 0x8915, # SIOCGIFADDR
- struct.pack('256s', ifname[:15])
- )[20:24])
-
-def is_it_up(host, port):
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(1)
- s.connect((host, port))
- s.close()
- except:
- print "host: %s:%s DOWN" % (host, port)
- return False
-
- print "host: %s:%s UP" % (host, port)
- return True
-
-# hmm master actions don't apply to a slave
-master="192.168.1.161"
-port=8899
-user = "oracle"
-password = "test123"
-auth = "%s:%s" % (user, password)
-server = getCon(auth, 'localhost', port)
-mserver = getCon(auth, master, port)
-poolNode=True
-interface = "c0a80100"
-role='xen,utility'
-hostname=gethostname()
-ip = get_ip_address(interface)
-poolMembers = []
-xserver = server
-poolCount = 0
-
-try:
- print server.discover_pool_filesystem()
- print
- print server.discover_server_pool()
- poolDom = parseString(server.discover_server_pool())
- for node in poolDom.getElementsByTagName('Server_Pool'):
- id = node.getElementsByTagName('Unique_Id')[0].firstChild.nodeValue
- alias = node.getElementsByTagName('Pool_Alias')[0].firstChild.nodeValue
- mvip = node.getElementsByTagName('Master_Virtual_Ip')[0].firstChild.nodeValue
- print "pool: %s, %s, %s" % (id, mvip, alias)
- members = node.getElementsByTagName('Member')
- for member in members:
- poolCount = poolCount + 1
- mip = member.getElementsByTagName('Registered_IP')[0].firstChild.nodeValue
- print "member: %s" % (mip)
- if mip == ip:
- pooled = True
- else:
- poolMembers.append(mip)
-
- # print server.discover_server()
-
-except Error, v:
- print "ERROR", v
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/ovs_agent_plugin/cloudstack.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/ovs_agent_plugin/cloudstack.py b/plugins/hypervisors/ovm3/scripts/ovs_agent_plugin/cloudstack.py
deleted file mode 100644
index f655760..0000000
--- a/plugins/hypervisors/ovm3/scripts/ovs_agent_plugin/cloudstack.py
+++ /dev/null
@@ -1,344 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import logging
-import time
-import re
-import os.path
-import paramiko
-import subprocess
-import socket
-
-from xen.util.xmlrpcclient import ServerProxy
-from xmlrpclib import Error
-from xen.xend import XendClient
-from agent.api.base import Agent
-from agent.lib.settings import get_api_version
-from xen.xend import sxp
-
-class CloudStack(Agent):
- """
- Cloudstack plugin for OVM3.2.x.
- """
-
- # exposed services
- def get_services(self, version=None):
- return {
- 'call': call,
- 'get_vncport': getVncPort,
- 'exec_domr': domrExec,
- 'check_domr_port': domrCheckPort,
- 'check_domr_ssh': domrCheckSsh,
- 'ovs_control_interface': ovsControlInterface,
- 'ovs_mkdir': ovsMkdir,
- 'ovs_check_file': ovsCheckFile,
- 'ovs_upload_ssh_key': ovsUploadSshKey,
- 'ovs_dom0_stats': ovsDom0Stats,
- 'ovs_domU_stats': ovsDomUStats,
- 'get_module_version': getModuleVersion,
- 'ping': ping,
-# 'ovs_agent_set_ssl': ovsAgentSetSsl,
-# 'ovs_agent_set_port': ovsAgentSetPort,
-# 'ovs_restart_agent': ovsRestartAgent,
- }
-
- def getName(self):
- return self.__class__.__name__
-
-# which version are we intended for?
-def getModuleVersion():
- return "0.1"
-
-# call test
-def call(msg):
- return msg
-
-# execute something on domr
-def domrExec(ip, cmd, timeout=10, username="root", port=3922, keyfile="~/.ssh/id_rsa.cloud"):
- ssh = paramiko.SSHClient()
- ssh.load_system_host_keys()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- privatekeyfile = os.path.expanduser(keyfile)
- key = paramiko.RSAKey.from_private_key_file(privatekeyfile)
- ssh.connect(ip, port, username, pkey=key, timeout=timeout)
- ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd)
- exit_status = ssh_stdout.channel.recv_exit_status()
- ssh.close()
- return { "rc": exit_status,
- "out": ''.join(ssh_stdout.readlines()),
- "err": ''.join(ssh_stderr.readlines()) };
-
-# check a port on domr
-def domrPort(ip, port=3922, timeout=3):
- return domrCheckPort(ip, port, timeout=timeout)
-
-# check a port on domr
-def domrCheckPort(ip, port=3922, timeout=3):
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(timeout)
- s.connect((ip, port))
- s.close()
- return True
- except:
- return False
-
-# check ssh
-def domrCheckSsh(ip, port=3922, timeout=10):
- x = domrExec(ip, "", port=port, timeout=timeout)
- if (x.get("rc") == 0):
- return True
- return False
-
-def _ovsIni(setting, set):
- ini="/etc/ovs-agent/agent.ini"
- replaced=False
- if os.path.isfile(ini):
- import fileinput
- for line in fileinput.FileInput(ini, inplace=1):
- line=line.rstrip('\n')
- if re.search("%s=" % setting, line):
- line="%s=%s" % (setting, set)
- replaced=True
- print line
- return replaced
-
-# enable/disable ssl for the agent
-def ovsAgentSetSsl(state):
- ena="disable"
- if state and state != "disable" and state.lower() != "false":
- ena="enable"
- return _ovsIni("ssl", ena)
-
-def ovsAgentSetPort(port):
- return _ovsIni("port", port)
-
-def ovsRestartAgent():
- return restartService("ovs-agent")
-
-# replace with popen
-def restartService(service):
- command = ['service', service, 'restart'];
- subprocess.call(command, shell=False)
- return True
-
-# sets the control interface and removes the route net entry
-def ovsControlInterface(dev, ipmask):
- command = ['route', 'del', '-net', ipmask];
- subprocess.call(command, shell=False)
- command = ['ifconfig', dev, 'arp']
- subprocess.call(command, shell=False)
- return True
-
-# create a dir if we need it
-def ovsMkdir(dir, mode=0700):
- if not os.path.exists(dir):
- return os.makedirs(dir, mode)
- return True
-
-# if a file exists, easy
-def ovsCheckFile(file):
- if os.path.isfile(file):
- return True
- return False
-
-# upload keys
-def ovsUploadSshKey(keyfile, content):
- keydir=os.path.expanduser("~/.ssh")
- key="%s/%s" % (keydir, keyfile)
- try:
- ovsMkdir(os.path.expanduser(keydir))
- except Error, v:
- print "was already there %s" % keydir
-
- try:
- text_file = open("%s" % key, "w")
- text_file.write("%s" % content)
- text_file.close()
- except Error, v:
- print "something went wrong %s" % v
- return False
- return True
-
-
-# older python,
-def ovsDom0Stats(bridge):
- stats={}
- stats['cpu'] = "%s" % (100 - float(os.popen("top -b -n 1 | grep Cpu\(s\): | cut -d% -f4|cut -d, -f2").read()))
- stats['free'] = "%s" % (1048576 * int(os.popen("xm info | grep free_memory | awk '{ print $3 }'").read()))
- stats['total'] = "%s" % (1048576 * int(os.popen("xm info | grep total_memory | awk '{ print $3 }'").read()))
- stats['tx'] = os.popen("netstat -in | grep %s | head -1 | awk '{print $4 }'" % bridge).read()
- stats['rx'] = os.popen("netstat -in | grep %s | head -1 | awk '{print $8 }'" % bridge).read()
- return stats
-
-def getVncPort(domain):
- port = "0"
- if re.search("\w-(\d+-)?\d+-VM", domain):
- server=ServerProxy(XendClient.uri)
- dom=server.xend.domain(domain, 1)
- devices = [child for child in sxp.children(dom)
- if len(child) > 0 and child[0] == "device"]
- vfbs_sxp = map(lambda x: x[1], [device for device in devices
- if device[1][0] == "vfb"])[0]
- loc=[child for child in vfbs_sxp
- if child[0] == "location"][0][1]
- listner, port = loc.split(":")
- else:
- print "no valid domain: %s" % domain
- return port
-
-def get_child_by_name(exp, childname, default = None):
- try:
- return [child for child in sxp.children(exp)
- if child[0] == childname][0][1]
- except:
- return default
-
-def ovsDomUStats(domain):
- _rd_bytes=0
- _wr_bytes=0
- _rd_ops=0
- _wr_ops=0
- _tx_bytes=0
- _rx_bytes=0
- stats={}
- server=ServerProxy(XendClient.uri)
- dominfo=server.xend.domain(domain, 1)
- domid=get_child_by_name(dominfo, "domid")
-
- # vbds
- devs = server.xend.domain.getDeviceSxprs(domain, 'vbd')
- devids = [dev[0] for dev in devs]
- for dev in devids:
- sys_path="/sys/devices/%s-%s-%s/statistics" % ("vbd", domid, dev)
- _rd_bytes += long(open("%s/rd_sect" % sys_path).readline().strip())
- _wr_bytes += long(open("%s/wr_sect" % sys_path).readline().strip())
- _rd_ops += long(open("%s/rd_req" % sys_path).readline().strip())
- _wr_ops += long(open("%s/wr_req" % sys_path).readline().strip())
-
- # vifs
- devs = server.xend.domain.getDeviceSxprs(domain, 'vif')
- devids = [dev[0] for dev in devs]
- for dev in devids:
- vif="vif%s.%s" % (domid, dev)
- sys_path="/sys/devices/%s-%s-%s/net/%s/statistics" % ("vif", domid, dev, vif)
- _tx_bytes += long(open("%s/tx_bytes" % sys_path).readline().strip())
- _rx_bytes += long(open("%s/rx_bytes" % sys_path).readline().strip())
-
- epoch=time.time()
- stats['rd_bytes'] = "%s" % (_rd_bytes * 512)
- stats['wr_bytes'] = "%s" % (_wr_bytes * 512)
- stats['rd_ops'] = "%s" % (_rd_ops)
- stats['wr_ops'] = "%s" % (_wr_ops)
- stats['tx_bytes'] = "%s" % (_tx_bytes)
- stats['rx_bytes'] = "%s" % (_rx_bytes)
- stats['cputime']= "%s" % get_child_by_name(dominfo, "cpu_time")
- stats['uptime']= "%s" % (epoch - get_child_by_name(dominfo, "start_time"))
- stats['vcpus']= "%s" % get_child_by_name(dominfo, "online_vcpus")
- return stats
-
-def ping(host, count=3):
- if os.system("ping -c %s %s " % (count, host)) == 0:
- return True
- return False
-
-# add SystemVM stuff here....
-#
-
-#
-# Self deploy and integration, not de-integration
-# should return False if fails
-#
-# install us if we are missing in:
-# /usr/lib64/python2.4/site-packages/agent/api
-# and add our hooks in:
-# /usr/lib64/python2.4/site-packages/agent/target/api.py
-if __name__ == '__main__':
- from distutils.sysconfig import get_python_lib
- from agent.target.api import MODULES
- from shutil import copyfile
- import inspect, os, hashlib, getopt, sys
-
- # default vars
- exist=False
- agentpath="%s/agent" % (get_python_lib(1))
- api="%s/target/api.py" % (agentpath)
- modpath="%s/api" % (agentpath)
- ssl="disable"
- port=0
-
- # get options
- try:
- opts, args = getopt.getopt(sys.argv[1:], "sp::",
- [ 'port=','ssl='])
- except getopt.GetoptError:
- print "Available Options: --port=, --ssl="
- sys.exit()
-
- for o, a in opts:
- if o in ('-s', '--ssl'):
- ssl = a
- if o in ('-p', '--port'):
- port = int(a)
-
- # check if we're in the modules already
- cs = CloudStack()
- for mod in MODULES:
- if re.search(cs.getName(), "%s" % (mod)):
- exist=True
-
- # if we're not:
- if not exist:
- if os.path.isfile(api):
- import fileinput
- for line in fileinput.FileInput(api, inplace=1):
- line=line.rstrip('\n')
- if re.search("import common", line):
- line="%s, cloudstack" % (line)
- if re.search("MODULES", line):
- n=cs.getName()
- line="%s\n\t%s.%s," % (line, n.lower(), n)
- print line
- print "Api inserted, %s in %s" % (cs.getName(), api)
- else:
- print "Api missing, %s" % (api)
- else:
- print "Api present, %s in %s" % (cs.getName(), api)
-
- # either way check our version and install if checksum differs
- modfile="%s/%s.py" % (modpath, cs.getName().lower())
- me=os.path.abspath(__file__)
- if os.path.isfile(modfile):
- if hashlib.md5(open(me).read()).hexdigest() != hashlib.md5(open(modfile).read()).hexdigest():
- print "Module copy, %s" % (modfile)
- copyfile(me, modfile)
- else:
- print "Module correct, %s" % (modfile)
- else:
- print "Module copy, %s" % (modfile)
- copyfile(me, modfile)
-
- # setup ssl and port
- if ssl:
- ovsAgentSetSsl(ssl)
- if port > 1024:
- ovsAgentSetPort(port)
-
- # restart either way
- ovsRestartAgent()
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/password.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/password.py b/plugins/hypervisors/ovm3/scripts/password.py
deleted file mode 100755
index 25404a9..0000000
--- a/plugins/hypervisors/ovm3/scripts/password.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import os, sys, subprocess, socket,fcntl, struct
-from socket import gethostname
-from xml.dom.minidom import parseString
-
-from xmlrpclib import ServerProxy, Error
-
-def spCon(proto, host, port):
- print "trying %s on %s:%s" % (proto, host, port)
- try:
- x=ServerProxy("%s://%s:%s" % (proto, host, port))
- x.echo(proto)
- return x
- except Error, v:
- print "ERROR", v
- return
-
-def getCon(host, port):
- try:
- server = spCon("http", host, port)
- except Error, v:
- print "ERROR", v
- server = spCon("https", host, port)
-
- return server
-
-# hmm master actions don't apply to a slave
-port=8899
-user = "oracle"
-password = "test123"
-auth = "%s:%s" % (user, password)
-host = "localhost"
-
-print "setting up password"
-try:
- con = getCon(host, port)
- print con.update_agent_password(user, password)
-except Error, v:
- print "ERROR", v
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/repo_pool.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/repo_pool.py b/plugins/hypervisors/ovm3/scripts/repo_pool.py
deleted file mode 100755
index 71feca8..0000000
--- a/plugins/hypervisors/ovm3/scripts/repo_pool.py
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import os, sys, subprocess, socket,fcntl, struct
-from socket import gethostname
-from xml.dom.minidom import parseString
-
-from xmlrpclib import ServerProxy, Error
-
-def get_ip_address(ifname):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- return socket.inet_ntoa(fcntl.ioctl(
- s.fileno(),
- 0x8915, # SIOCGIFADDR
- struct.pack('256s', ifname[:15])
- )[20:24])
-
-def is_it_up(host, port):
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(1)
- s.connect((host, port))
- s.close()
- except:
- print "host: %s:%s DOWN" % (host, port)
- return False
-
- print "host: %s:%s UP" % (host, port)
- return True
-
-# hmm master actions don't apply to a slave
-master="192.168.1.161"
-port=8899
-user = "oracle"
-password = "*******"
-auth = "%s:%s" % (user, password)
-server = ServerProxy("http://%s:%s" % ("localhost", port))
-mserver = ServerProxy("http://%s@%s:%s" % (auth, master, port))
-poolNode=True
-interface = "c0a80100"
-role='xen,utility'
-hostname=gethostname()
-ip = get_ip_address(interface)
-poolMembers = []
-xserver = server
-
-print "setting up password"
-server.update_agent_password(user, password)
-
-if (is_it_up(master, port)):
- print "master seems to be up, slaving"
- xserver = mserver
-else:
- print "no master yet, will become master"
-
-# other mechanism must be used to make interfaces equal...
-try:
- # pooling related same as primary storage!
- poolalias="Pool 0"
- poolid="0004fb0000020000ba9aaf00ae5e2d73"
- poolfsnfsbaseuuid="7718562d-872f-47a7-b454-8f9cac4ffa3a"
- pooluuid=poolid
- poolfsuuid=poolid
- clusterid="ba9aaf00ae5e2d72"
- mgr="d1a749d4295041fb99854f52ea4dea97"
- poolmvip=master
-
- poolfsnfsbaseuuid="6824e646-5908-48c9-ba44-bb1a8a778084"
- repoid="6824e646590848c9ba44bb1a8a778084"
- poolid=repoid
- repo="/OVS/Repositories/%s" % (repoid)
- repomount="cs-mgmt:/volumes/cs-data/secondary"
-
- # primary
- primuuid="7718562d872f47a7b4548f9cac4ffa3a"
- ssuuid="7718562d-872f-47a7-b454-8f9cac4ffa3a"
- fshost="cs-mgmt"
- fstarget="/volumes/cs-data/primary"
- fstype="nfs"
- fsname="Primary storage"
- fsmntpoint="%s:%s" % (fshost, fstarget)
- fsmnt="/nfsmnt/%s" % (ssuuid)
- fsplugin="oracle.generic.NFSPlugin.GenericNFSPlugin"
-
- # set the basics we require to "operate"
- print server.take_ownership(mgr, '')
- print server.update_server_roles(role,)
-
- # if we're pooling pool...
- if (poolNode == True):
- poolCount = 0
- pooled = False
-
- # check pooling
- try:
- poolDom = parseString(xserver.discover_server_pool())
- print xserver.discover_server_pool()
- for node in poolDom.getElementsByTagName('Server_Pool'):
- id = node.getElementsByTagName('Unique_Id')[0].firstChild.nodeValue
- alias = node.getElementsByTagName('Pool_Alias')[0].firstChild.nodeValue
- mvip = node.getElementsByTagName('Master_Virtual_Ip')[0].firstChild.nodeValue
- print "pool: %s, %s, %s" % (id, mvip, alias)
- members = node.getElementsByTagName('Member')
- for member in members:
- poolCount = poolCount + 1
- mip = member.getElementsByTagName('Registered_IP')[0].firstChild.nodeValue
- print "member: %s" % (mip)
- if mip == ip:
- pooled = True
- else:
- poolMembers.append(mip)
-
- except Error,v:
- print "no master will become master, %s" % v
-
- if (pooled == False):
- # setup the repository
- print "setup repo"
- print server.mount_repository_fs(repomount, repo)
- try:
- print "adding repo"
- print server.add_repository(repomount, repo)
- except Error, v:
- print "will create the repo, as it's not there", v
- print server.create_repository(repomount, repo, repoid, "repo")
-
- print "not pooled!"
- if (poolCount == 0):
- print "no pool yet, create it"
- # check if a pool exists already if not create
- # pool if so add us to the pool
- print "create pool fs"
- print server.create_pool_filesystem(
- fstype,
- "%s/VirtualMachines/" % repomount,
- clusterid,
- poolfsuuid,
- poolfsnfsbaseuuid,
- mgr,
- pooluuid
- )
- print "create pool"
- print server.create_server_pool(poolalias,
- pooluuid,
- poolmvip,
- poolCount,
- hostname,
- ip,
- role
- )
- else:
- print "join the pool"
- print server.join_server_pool(poolalias,
- pooluuid,
- poolmvip,
- poolCount,
- hostname,
- ip,
- role
- )
-
- # add member to ip list ?
- poolMembers.append(ip)
- print "mambers for pool: %s" % poolMembers
- print xserver.set_pool_member_ip_list(poolMembers)
-
- print server.discover_server_pool()
-
-except Error, v:
- print "ERROR", v
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/simple_pool.py
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/simple_pool.py b/plugins/hypervisors/ovm3/scripts/simple_pool.py
deleted file mode 100755
index 756de93..0000000
--- a/plugins/hypervisors/ovm3/scripts/simple_pool.py
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/usr/bin/python
-#
-# 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.
-#
-import os, sys, subprocess, socket,fcntl, struct
-from socket import gethostname
-from xml.dom.minidom import parseString
-import errno
-from socket import error as socket_error
-
-from xmlrpclib import ServerProxy, Error
-
-def spCon(proto, auth, host, port):
- print "trying %s on %s@%s:%s" % (proto, auth, host, port)
- try:
- x=ServerProxy("%s://%s@%s:%s" % (proto, auth, host, port))
- x.echo(proto)
- return x
- except Error, v:
- return
- except socket_error, serr:
- return
-
-def getCon(auth, host, port):
- try:
- server = spCon("http", auth, host, port)
- if server:
- return server
- else:
- server = spCon("https", auth, host, port)
- except Error, v:
- print "ERROR", v
- return server
-
-def get_ip_address(ifname):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- return socket.inet_ntoa(fcntl.ioctl(
- s.fileno(),
- 0x8915, # SIOCGIFADDR
- struct.pack('256s', ifname[:15])
- )[20:24])
-
-# hmm master actions don't apply to a slave
-master="192.168.1.161"
-port=8899
-passw='test123'
-user='oracle'
-auth="%s:%s" % (user, passw)
-server = getCon(auth, "localhost", port)
-mserver = getCon(auth, master, port)
-try:
- mserver.echo("test")
-except AttributeError, v:
- print "no mserver, becoming mserver"
- mserver=server
-
-poolNode=True
-interface = "c0a80100"
-role='xen,utility'
-hostname=gethostname()
-ip = get_ip_address(interface)
-nodes=[]
-
-try:
- # pooling related same as primary storage!
- poolalias="Pool 0"
- clusterid="ba9aaf00ae5e2d72"
- mgr="d1a749d4295041fb99854f52ea4dea97"
- poolmvip=master
-
- # primary
- primuuid="7718562d872f47a7b4548f9cac4ffa3a"
- ssuuid="7718562d-872f-47a7-b454-8f9cac4ffa3a"
- fshost="cs-mgmt"
- fstarget="/volumes/cs-data/primary/ovm"
- fstype="nfs"
- fsname="Primary storage"
- fsmntpoint="%s:%s" % (fshost, fstarget)
- fsmntpoint2="%s:%s" % (fshost, "/volumes/cs-data/secondary")
- fsmntpoint="%s/VirtualMachines" % (fsmntpoint2)
- fsmnt="/nfsmnt/%s" % (ssuuid)
- fsplugin="oracle.generic.NFSPlugin.GenericNFSPlugin"
- repo="/OVS/Repositories/%s" % (primuuid)
-
- # set the basics we require to "operate"
- print server.take_ownership(mgr, '')
- print server.update_server_roles(role,)
-
- # setup the repository
- print server.mount_repository_fs(fsmntpoint2, repo)
- try:
- print server.add_repository(fsmntpoint2, repo)
- except Error, v:
- print "will create the repo, as it's not there", v
- print server.create_repository(fsmntpoint2, repo, primuuid, "A repository")
-
- # if we're pooling pool...
- if (poolNode == True):
- poolCount = 0
- pooled = False
-
- # check pooling
- poolDom = parseString(mserver.discover_server_pool())
- for node in poolDom.getElementsByTagName('Server_Pool'):
- id = node.getElementsByTagName('Unique_Id')[0].firstChild.nodeValue
- alias = node.getElementsByTagName('Pool_Alias')[0].firstChild.nodeValue
- mvip = node.getElementsByTagName('Master_Virtual_Ip')[0].firstChild.nodeValue
- print "pool: %s, %s, %s" % (id, mvip, alias)
- members = node.getElementsByTagName('Member')
- for member in members:
- poolCount = poolCount + 1
- mip = member.getElementsByTagName('Registered_IP')[0].firstChild.nodeValue
- if (mip == ip):
- pooled = True
- else:
- nodes.append(mip)
- print "member: %s" % (mip)
-
- # if (pooled == False):
- try:
- if (poolCount == 0):
- print "master"
- # check if a pool exists already if not create
- # pool if so add us to the pool
- print server.configure_virtual_ip(master, ip)
- print server.create_pool_filesystem(
- fstype,
- fsmntpoint,
- clusterid,
- primuuid,
- ssuuid,
- mgr,
- primuuid
- )
- print server.create_server_pool(poolalias,
- primuuid,
- poolmvip,
- poolCount,
- hostname,
- ip,
- role
- )
- else:
- try:
- print "slave"
- print server.join_server_pool(poolalias,
- primuuid,
- poolmvip,
- poolCount,
- hostname,
- ip,
- role
- )
- except Error, v:
- print "host already part of pool?: %s" % (v)
-
- nodes.append(ip)
- for node in nodes:
- # con = getCon(auth, node, port)
- # print con.set_pool_member_ip_list(nodes);
- print mserver.dispatch("http://%s@%s:%s/api/3" % (auth, node, port), "set_pool_member_ip_list", nodes)
- # print server.configure_virtual_ip(master, ip)
- except Error, e:
- print "something went wrong: %s" % (e)
-
- # sys.exit()
- # mount the primary fs
- print server.storage_plugin_mount(
- fsplugin,
- {
- 'uuid': primuuid,
- 'storage_desc': fsname,
- 'access_host': fshost,
- 'storage_type': 'FileSys',
- 'name':primuuid
- },
- {
- 'status': '',
- 'uuid': ssuuid,
- 'ss_uuid': primuuid,
- 'size': 0,
- 'state': 1,
- 'access_grp_names': [],
- 'access_path': fsmntpoint,
- 'name': fsname
- },
- fsmnt,
- '',
- True,
- []
- )
-
-except Error, v:
- print "ERROR", v
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/socat.sh
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/socat.sh b/plugins/hypervisors/ovm3/scripts/socat.sh
deleted file mode 100755
index c3fbc44..0000000
--- a/plugins/hypervisors/ovm3/scripts/socat.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-CERT="/etc/ovs-agent/cert"
-socat OPENSSL-LISTEN:8899,reuseaddr,fork,verify=0,key=$CERT/key.pem,cert=$CERT/certificate.pem TCP:localhost:8898 &
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/scripts/tail.sh
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/scripts/tail.sh b/plugins/hypervisors/ovm3/scripts/tail.sh
deleted file mode 100755
index fe88bc0..0000000
--- a/plugins/hypervisors/ovm3/scripts/tail.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-cd /var/log
-tail -f ovm-consoled.log devmon.log messages ovs-agent.log ovmwatch.log
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/src/com/cloud/ha/Ovm3Investigator.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/src/com/cloud/ha/Ovm3Investigator.java b/plugins/hypervisors/ovm3/src/com/cloud/ha/Ovm3Investigator.java
deleted file mode 100644
index 980fa1f..0000000
--- a/plugins/hypervisors/ovm3/src/com/cloud/ha/Ovm3Investigator.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.
- */
-package com.cloud.ha;
-
-import java.util.List;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.AgentManager;
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.CheckOnHostCommand;
-import com.cloud.host.Host;
-import com.cloud.host.HostVO;
-import com.cloud.host.Status;
-import com.cloud.host.dao.HostDao;
-import com.cloud.hypervisor.Hypervisor;
-import com.cloud.resource.ResourceManager;
-import com.cloud.utils.component.AdapterBase;
-
-@Local(value = Investigator.class)
-public class Ovm3Investigator extends AdapterBase implements Investigator {
- private final static Logger s_logger = Logger.getLogger(Ovm3Investigator.class);
- @Inject
- HostDao _hostDao;
- @Inject
- AgentManager _agentMgr;
- @Inject
- ResourceManager _resourceMgr;
-
- @Override
- public Boolean isVmAlive(com.cloud.vm.VirtualMachine vm, Host host) {
- Status status = isAgentAlive(host);
- if (status == null) {
- return null;
- }
- return status == Status.Up ? true : null;
- }
-
- @Override
- public Status isAgentAlive(Host agent) {
- if (agent.getHypervisorType() != Hypervisor.HypervisorType.Ovm3) {
- return null;
- }
- CheckOnHostCommand cmd = new CheckOnHostCommand(agent);
- List<HostVO> neighbors = _resourceMgr.listHostsInClusterByStatus(agent.getClusterId(), Status.Up);
- for (HostVO neighbor : neighbors) {
- if (neighbor.getId() == agent.getId() || neighbor.getHypervisorType() != Hypervisor.HypervisorType.Ovm3) {
- continue;
- }
- try {
- Answer answer = _agentMgr.easySend(neighbor.getId(), cmd);
- if (answer != null) {
- return answer.getResult() ? Status.Down : Status.Up;
- }
- } catch (Exception e) {
- s_logger.debug("Failed to send command to host: " + neighbor.getId());
- }
- }
-
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Discoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Discoverer.java b/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Discoverer.java
deleted file mode 100755
index bd1d90d..0000000
--- a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Discoverer.java
+++ /dev/null
@@ -1,411 +0,0 @@
-// 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.
-package com.cloud.hypervisor.ovm3.hypervisor;
-
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-import javax.naming.ConfigurationException;
-
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-
-import com.cloud.agent.Listener;
-import com.cloud.agent.AgentManager;
-import com.cloud.agent.api.AgentControlAnswer;
-import com.cloud.agent.api.AgentControlCommand;
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.Command;
-import com.cloud.host.Status;
-import com.cloud.agent.api.StartupCommand;
-import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.configuration.Config;
-import com.cloud.dc.ClusterVO;
-import com.cloud.dc.dao.ClusterDao;
-import com.cloud.dc.ClusterDetailsDao;
-// import com.cloud.exception.DiscoveryException;
-import com.cloud.host.HostInfo;
-import com.cloud.host.HostVO;
-import com.cloud.host.Host;
-import com.cloud.host.dao.HostDao;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.hypervisor.ovm3.object.Linux;
-import com.cloud.hypervisor.ovm3.object.Connection;
-import com.cloud.resource.Discoverer;
-import com.cloud.resource.DiscovererBase;
-import com.cloud.resource.ResourceManager;
-import com.cloud.resource.ResourceStateAdapter;
-import com.cloud.resource.ServerResource;
-import com.cloud.resource.UnableDeleteHostException;
-import com.cloud.utils.db.QueryBuilder;
-import com.cloud.utils.db.SearchCriteria;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.ssh.SSHCmdHelper;
-
-@Local(value = Discoverer.class)
-public class Ovm3Discoverer extends DiscovererBase implements Discoverer,
- Listener, ResourceStateAdapter {
- private static final Logger s_logger = Logger
- .getLogger(Ovm3Discoverer.class);
- protected String _publicNetworkDevice;
- protected String _privateNetworkDevice;
- protected String _guestNetworkDevice;
- protected String _storageNetworkDevice;
- private String _ovsAgentPath = "/etc/ovs-agent/agent.ini";
-
- @Inject
- ClusterDao _clusterDao;
- @Inject
- ClusterDetailsDao _clusterDetailsDao;
- @Inject
- ResourceManager _resourceMgr;
- @Inject
- AgentManager _agentMgr;
- @Inject
- HostDao _hostDao = null;
-
- @Override
- public boolean configure(String name, Map<String, Object> params)
- throws ConfigurationException {
- super.configure(name, params);
- /* these are in Config.java */
- _publicNetworkDevice = _params.get(Config.Ovm3PublicNetwork.key());
- _privateNetworkDevice = _params.get(Config.Ovm3PrivateNetwork.key());
- _guestNetworkDevice = _params.get(Config.Ovm3GuestNetwork.key());
- _storageNetworkDevice = _params.get(Config.Ovm3StorageNetwork.key());
- _resourceMgr.registerResourceStateAdapter(this.getClass()
- .getSimpleName(), this);
- return true;
- }
-
- protected Ovm3Discoverer() {
- }
-
- @Override
- public boolean stop() {
- _resourceMgr.unregisterResourceStateAdapter(this.getClass()
- .getSimpleName());
- return super.stop();
- }
-
- private boolean checkIfExisted(String guid) {
- QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
- sc.and(sc.entity().getGuid(), SearchCriteria.Op.EQ, guid);
- sc.and(sc.entity().getHypervisorType(), SearchCriteria.Op.EQ,
- HypervisorType.Ovm3);
- List<HostVO> hosts = sc.list();
- return !hosts.isEmpty();
- }
-
- @Override
- public Map<? extends ServerResource, Map<String, String>> find(long dcId,
- Long podId, Long clusterId, URI url, String username,
- String password, List<String> hostTags)
- throws CloudRuntimeException {
- Connection c = null;
-
- if (url.getScheme().equals("http") || url.getScheme().equals("https")) {
- String msg = "Discovering " + url
- + ": " + _params;
- s_logger.debug(msg);
- } else {
- String msg = "urlString is not http(s) so we're not taking care of the discovery for this: "
- + url;
- s_logger.debug(msg);
- throw new CloudRuntimeException(msg);
- }
-
- if (clusterId == null) {
- String msg = "must specify cluster Id when add host";
- s_logger.debug(msg);
- throw new CloudRuntimeException(msg);
- }
-
- if (podId == null) {
- String msg = "must specify pod Id when add host";
- s_logger.debug(msg);
- throw new CloudRuntimeException(msg);
- }
-
- ClusterVO cluster = _clusterDao.findById(clusterId);
- if (cluster == null
- || (cluster.getHypervisorType() != HypervisorType.Ovm3)) {
- String msg = "invalid cluster id or cluster is not for Ovm3 hypervisors";
- s_logger.info(msg);
- throw new CloudRuntimeException(msg);
- } else {
- s_logger.info("cluster: " + cluster);
- }
-
- String agentUsername = _params.get("agentusername");
- if (agentUsername == null) {
- String msg = "Agent user name must be specified";
- s_logger.info(msg);
- throw new CloudRuntimeException(msg);
- }
-
- String agentPassword = _params.get("agentpassword");
- if (agentPassword == null) {
- String msg = "Agent password must be specified";
- s_logger.info(msg);
- throw new CloudRuntimeException(msg);
- }
-
- String agentPort = _params.get("agentport");
- if (agentPort == null) {
- String msg = "Agent port must be specified";
- s_logger.info(msg);
- throw new CloudRuntimeException(msg);
- }
-
- try {
- String hostname = url.getHost();
- /* port = url.getPort(); */
-
- InetAddress ia = InetAddress.getByName(hostname);
- String hostIp = ia.getHostAddress();
- String guid = UUID.nameUUIDFromBytes(hostIp.getBytes()).toString();
-
- if (checkIfExisted(guid)) {
- String msg = "The host " + hostIp + " has been added before";
- s_logger.debug(msg);
- throw new CloudRuntimeException(msg);
- }
-
- s_logger.debug("Ovm3 discover is going to disover host having guid "
- + guid);
-
- ClusterVO clu = _clusterDao.findById(clusterId);
- if (clu.getGuid() == null) {
- clu.setGuid(UUID.randomUUID().toString());
- }
- _clusterDao.update(clusterId, clu);
- Map<String, String> clusterDetails = _clusterDetailsDao
- .findDetails(clusterId);
- String ovm3vip = (clusterDetails.get("ovm3vip") == null) ? ""
- : clusterDetails.get("ovm3vip");
- String ovm3pool = (clusterDetails.get("ovm3pool") == null) ? "false"
- : clusterDetails.get("ovm3pool");
- String ovm3cluster = (clusterDetails.get("ovm3cluster") == null) ? "false"
- : clusterDetails.get("ovm3cluster");
-
- /* should perhaps only make this connect to the agent port ? */
- com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(
- hostIp, 22);
- sshConnection.connect(null, 60000, 60000);
- sshConnection = SSHCmdHelper.acquireAuthorizedConnection(hostIp,
- username, password);
- if (sshConnection == null) {
- String msg = String.format("Cannot connect to Ovm3 host(IP=%1$s, username=%2$s, password=*******), discovery failed",
- hostIp, username);
- s_logger.warn(msg);
- throw new CloudRuntimeException(msg);
- }
-
- Map<String, String> details = new HashMap<String, String>();
- Ovm3ResourceBase ovmResource = new Ovm3ResourceBase();
- details.put("ip", hostIp);
- details.put("host", hostname);
- details.put("username", username);
- details.put("password", password);
- details.put("zone", Long.toString(dcId));
- details.put("guid", guid);
- details.put("pod", Long.toString(podId));
- details.put("cluster", Long.toString(clusterId));
- details.put("agentusername", agentUsername);
- details.put("agentpassword", agentPassword);
- details.put("agentport", agentPort.toString());
- details.put("ovm3vip", ovm3vip);
- details.put("ovm3pool", ovm3pool);
- details.put("ovm3cluster", ovm3cluster);
-
- if (_publicNetworkDevice != null) {
- details.put("public.network.device", _publicNetworkDevice);
- }
- if (_privateNetworkDevice != null) {
- details.put("private.network.device", _privateNetworkDevice);
- }
- if (_guestNetworkDevice != null) {
- details.put("guest.network.device", _guestNetworkDevice);
- }
- if (_storageNetworkDevice != null) {
- details.put("storage.network.device", _storageNetworkDevice);
- }
- s_logger.warn("network devices: " + _guestNetworkDevice + " "
- + _privateNetworkDevice + " " + _publicNetworkDevice + " "
- + _storageNetworkDevice);
-
- Map<String, Object> params = new HashMap<String, Object>();
- params.putAll(details);
-
- ovmResource.configure(hostname, params);
- ovmResource.start();
-
- try {
- c = new Connection(hostIp, Integer.parseInt(agentPort), agentUsername, agentPassword);
- } catch (Exception e) {
- String msg = String.format("Cannot connect to Ovm3 agent(IP=%1$s, Port=%1$, username=%3$s, password=*******), discovery failed",
- hostIp, agentPort, agentUsername);
- s_logger.warn(msg);
- throw new CloudRuntimeException(msg);
- }
- /* After resource start, we are able to execute our agent api */
- Linux host = new Linux(c);
- details.put("agentVersion", host.getAgentVersion());
- details.put(HostInfo.HOST_OS_KERNEL_VERSION,
- host.getHostKernelRelease());
- details.put(HostInfo.HOST_OS, host.getHostOs());
- details.put(HostInfo.HOST_OS_VERSION, host.getHostOsVersion());
- details.put(HostInfo.HYPERVISOR_VERSION,
- host.getHypervisorVersion());
-
- Map<Ovm3ResourceBase, Map<String, String>> resources = new HashMap<Ovm3ResourceBase, Map<String, String>>();
- resources.put(ovmResource, details);
- return resources;
- } catch (XmlRpcException e) {
- s_logger.debug("XmlRpc exception, Unable to discover Ovm3 host: " + url.getHost(),
- e);
- return null;
- } catch (UnknownHostException e) {
- s_logger.debug(
- "Host name resolve failed exception, Unable to discover Ovm3 host: "
- + url.getHost(), e);
- return null;
- } catch (ConfigurationException e) {
- s_logger.debug(
- "Configure resource failed, Unable to discover Ovm3 host: " + url.getHost(),
- e);
- return null;
- } catch (Exception e) {
- s_logger.debug("Unable to discover Ovm3 host: " + url.getHost(), e);
- return null;
- }
- }
-
- @Override
- public void postDiscovery(List<HostVO> hosts, long msId)
- throws CloudRuntimeException {
- // TODO Auto-generated method stub
- s_logger.debug("postDiscovery" + hosts);
- }
-
- @Override
- public boolean matchHypervisor(String hypervisor) {
- return HypervisorType.Ovm3.toString().equalsIgnoreCase(hypervisor);
- }
-
- @Override
- public HypervisorType getHypervisorType() {
- return HypervisorType.Ovm3;
- }
-
- @Override
- public HostVO createHostVOForConnectedAgent(HostVO host,
- StartupCommand[] cmd) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public boolean processAnswers(long agentId, long seq, Answer[] answers) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean processCommands(long agentId, long seq, Command[] commands) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public AgentControlAnswer processControlCommand(long agentId,
- AgentControlCommand cmd) {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* for reconnecting */
- @Override
- public void processConnect(Host host, StartupCommand cmd,
- boolean forRebalance) {
- }
-
- @Override
- public boolean processDisconnect(long agentId, Status state) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean isRecurring() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public int getTimeout() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public boolean processTimeout(long agentId, long seq) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public HostVO createHostVOForDirectConnectAgent(HostVO host,
- StartupCommand[] startup, ServerResource resource,
- Map<String, String> details, List<String> hostTags) {
- StartupCommand firstCmd = startup[0];
- if (!(firstCmd instanceof StartupRoutingCommand)) {
- return null;
- }
-
- StartupRoutingCommand ssCmd = ((StartupRoutingCommand) firstCmd);
- if (ssCmd.getHypervisorType() != HypervisorType.Ovm3) {
- return null;
- }
-
- // TODO: Double check this
- return _resourceMgr.fillRoutingHostVO(host, ssCmd, HypervisorType.Ovm3,
- details, hostTags);
- }
-
- // TODO: Make sure that we cleanup when the host is removed
- @Override
- public DeleteHostAnswer deleteHost(HostVO host, boolean isForced,
- boolean isForceDeleteStorage) throws UnableDeleteHostException {
- if (host.getType() != com.cloud.host.Host.Type.Routing
- || host.getHypervisorType() != HypervisorType.Ovm3) {
- return null;
- }
-
- _resourceMgr.deleteRoutingHost(host, isForced, isForceDeleteStorage);
- return new DeleteHostAnswer(true);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Fencer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Fencer.java b/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Fencer.java
deleted file mode 100755
index 30db663..0000000
--- a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Fencer.java
+++ /dev/null
@@ -1,133 +0,0 @@
-// 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.
-package com.cloud.hypervisor.ovm3.hypervisor;
-
-import java.util.List;
-import java.util.Map;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-import javax.naming.ConfigurationException;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.AgentManager;
-import com.cloud.agent.api.FenceAnswer;
-import com.cloud.agent.api.FenceCommand;
-import com.cloud.exception.AgentUnavailableException;
-import com.cloud.exception.OperationTimedoutException;
-import com.cloud.ha.FenceBuilder;
-import com.cloud.host.Host;
-import com.cloud.host.HostVO;
-import com.cloud.host.Status;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.resource.ResourceManager;
-import com.cloud.utils.component.AdapterBase;
-import com.cloud.vm.VirtualMachine;
-
-@Local(value = FenceBuilder.class)
-public class Ovm3Fencer extends AdapterBase implements FenceBuilder {
- Map<String, Object> _params;
- private static final Logger s_logger = Logger.getLogger(Ovm3Fencer.class);
- @Inject
- AgentManager _agentMgr;
- @Inject
- ResourceManager _resourceMgr;
-
-
- @Override
- public boolean configure(String name, Map<String, Object> params)
- throws ConfigurationException {
- _params = params;
- return true;
- }
-
- @Override
- public boolean start() {
- // TODO Auto-generated method stub
- return true;
- }
-
- @Override
- public boolean stop() {
- // TODO Auto-generated method stub
- return true;
- }
-
- public Ovm3Fencer() {
- super();
- }
-
- @Override
- public Boolean fenceOff(VirtualMachine vm, Host host) {
- if (host.getHypervisorType() != HypervisorType.Ovm3) {
- s_logger.debug("Don't know how to fence non Ovm3 hosts "
- + host.getHypervisorType());
- return null;
- } else {
- s_logger.debug("Fencing " + vm + " on host " + host
- + " with params: "+ _params );
- }
-
- List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(host
- .getClusterId());
- FenceCommand fence = new FenceCommand(vm, host);
-
- for (HostVO h : hosts) {
- if (h.getHypervisorType() != HypervisorType.Ovm3) {
- continue;
- }
-
- if (h.getStatus() != Status.Up) {
- continue;
- }
-
- if (h.getId() == host.getId()) {
- continue;
- }
-
- FenceAnswer answer;
- try {
- answer = (FenceAnswer) _agentMgr.send(h.getId(), fence);
- } catch (AgentUnavailableException e) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Moving on to the next host because "
- + h.toString() + " is unavailable");
- }
- continue;
- } catch (OperationTimedoutException e) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Moving on to the next host because "
- + h.toString() + " is unavailable");
- }
- continue;
- }
-
- if (answer != null && answer.getResult()) {
- return true;
- }
- }
-
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Unable to fence off " + vm.toString() + " on "
- + host.toString());
- }
-
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/be028974/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Guru.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Guru.java b/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Guru.java
deleted file mode 100755
index 08aac30..0000000
--- a/plugins/hypervisors/ovm3/src/com/cloud/hypervisor/ovm3/hypervisor/Ovm3Guru.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// 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.
-
-/* shameless rip from original ovm guru */
-package com.cloud.hypervisor.ovm3.hypervisor;
-
-import javax.ejb.Local;
-import javax.inject.Inject;
-
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.hypervisor.HypervisorGuru;
-import com.cloud.hypervisor.HypervisorGuruBase;
-import com.cloud.storage.GuestOSVO;
-import com.cloud.storage.dao.GuestOSDao;
-import com.cloud.vm.VirtualMachineProfile;
-
-@Local(value = HypervisorGuru.class)
-public class Ovm3Guru extends HypervisorGuruBase implements HypervisorGuru {
- // private static final Logger s_logger = Logger.getLogger(VMwareGuru.class);
-
- @Inject
- GuestOSDao _guestOsDao;
-
- protected Ovm3Guru() {
- super();
- }
-
- @Override
- public HypervisorType getHypervisorType() {
- return HypervisorType.Ovm3;
- }
-
- @Override
- public VirtualMachineTO implement(VirtualMachineProfile vm) {
- VirtualMachineTO to = toVirtualMachineTO(vm);
- to.setBootloader(vm.getBootLoaderType());
-
- // Determine the VM's OS description
- GuestOSVO guestOS = _guestOsDao.findById(vm.getVirtualMachine()
- .getGuestOSId());
- to.setOs(guestOS.getDisplayName());
-
- return to;
- }
-
- @Override
- public boolean trackVmHostChange() {
- return true;
- }
-}