Conversely, if the storage framework called the DestroyCommand for managed storage after the DetachCommand, then I could have had my remove SR/datastore logic placed in the DestroyCommand handling rather than in the DetachCommand handling.
On Sun, Sep 22, 2013 at 12:06 AM, Mike Tutkowski < mike.tutkow...@solidfire.com> wrote: > Edison's plug-in calls the CreateCommand. Mine does not. > > The initial approach that was discussed during 4.2 was for me to modify > the attach/detach logic only in the XenServer and VMware hypervisor > plug-ins. > > Now that I think about it more, though, I kind of would have liked to have > the storage framework send a CreateCommand to the hypervisor before sending > the AttachCommand if the storage in question was managed. > > Then I could have created my SR/datastore in the CreateCommand and the > AttachCommand would have had the SR/datastore that it was always expecting > (and I wouldn't have had to create the SR/datastore in the AttachCommand). > > > On Sat, Sep 21, 2013 at 11:56 PM, Marcus Sorensen <shadow...@gmail.com>wrote: > >> Yeah, I think it probably is as well, but I figured you'd be in a >> better position to tell. >> >> I see that copyAsync is unsupported in your current 4.2 driver, does >> that mean that there's no template support? Or is it some other call >> that does templating now? I'm still getting up to speed on all of the >> 4.2 changes. I was just looking at CreateCommand in >> LibvirtComputingResource, since that's the only place >> createPhysicalDisk is called, and it occurred to me that CreateCommand >> might be skipped altogether when utilizing storage plugins. >> >> On Sat, Sep 21, 2013 at 11:38 PM, Mike Tutkowski >> <mike.tutkow...@solidfire.com> wrote: >> > That's an interesting comment, Marcus. >> > >> > It was my intent that it should work with any CloudStack "managed" >> storage >> > that uses an iSCSI target. Even though I'm using CHAP, I wrote the code >> so >> > CHAP didn't have to be used. >> > >> > As I'm doing my testing, I can try to think about whether it is generic >> > enough to keep those names or not. >> > >> > My expectation is that it is generic enough. >> > >> > >> > On Sat, Sep 21, 2013 at 11:32 PM, Marcus Sorensen <shadow...@gmail.com >> >wrote: >> > >> >> I added a comment to your diff. In general I think it looks good, >> >> though I obviously can't vouch for whether or not it will work. One >> >> thing I do have reservations about is the adaptor/pool naming. If you >> >> think the code is generic enough that it will work for anyone who does >> >> an iscsi LUN-per-volume plugin, then it's OK, but if there's anything >> >> about it that's specific to YOUR iscsi target or how it likes to be >> >> treated then I'd say that they should be named something less generic >> >> than iScsiAdmStorage. >> >> >> >> On Sat, Sep 21, 2013 at 7:23 PM, Mike Tutkowski >> >> <mike.tutkow...@solidfire.com> wrote: >> >> > Great - thanks! >> >> > >> >> > Just to give you an overview of what my code does (for when you get a >> >> > chance to review it): >> >> > >> >> > SolidFireHostListener is registered in >> SolidfirePrimaryDataStoreProvider. >> >> > Its hostConnect method is invoked when a host connects with the CS >> MS. If >> >> > the host is running KVM, the listener sends a >> ModifyStoragePoolCommand to >> >> > the host. This logic was based off of DefaultHostListener. >> >> > >> >> > The handling of ModifyStoragePoolCommand is unchanged. It invokes >> >> > createStoragePool on the KVMStoragePoolManager. The >> KVMStoragePoolManager >> >> > asks for an adaptor and finds my new one: iScsiAdmStorageAdaptor >> (which >> >> was >> >> > registered in the constructor for KVMStoragePoolManager under the >> key of >> >> > StoragePoolType.Iscsi.toString()). >> >> > >> >> > iScsiAdmStorageAdaptor.createStoragePool just makes an instance of >> >> > iScsiAdmStoragePool, adds it to a map, and returns the pointer to the >> >> > iScsiAdmStoragePool object. The key of the map is the UUID of the >> storage >> >> > pool. >> >> > >> >> > When a volume is attached, createPhysicalDisk is invoked for managed >> >> > storage rather than getPhysicalDisk. createPhysicalDisk uses >> iscsiadm to >> >> > establish the iSCSI connection to the volume on the SAN and a >> >> > KVMPhysicalDisk is returned to be used in the attach logic that >> follows. >> >> > >> >> > When a volume is detached, getPhysicalDisk is invoked with the IQN >> of the >> >> > volume if the storage pool in question is managed storage. >> Otherwise, the >> >> > normal vol.getPath() is used. iScsiAdmStorageAdaptor.getPhysicalDisk >> just >> >> > returns a new instance of KVMPhysicalDisk to be used in the detach >> logic. >> >> > >> >> > Once the volume has been detached, >> iScsiAdmStoragePool.deletePhysicalDisk >> >> > is invoked if the storage pool is managed. deletePhysicalDisk >> removes the >> >> > iSCSI connection to the volume using iscsiadm. >> >> > >> >> > >> >> > On Sat, Sep 21, 2013 at 5:46 PM, Marcus Sorensen < >> shadow...@gmail.com >> >> >wrote: >> >> > >> >> >> Its the log4j properties file in /etc/cloudstack/agent change all >> INFO >> >> to >> >> >> DEBUG. I imagine the agent just isn't starting, you can tail the >> log >> >> when >> >> >> you try to start the service, or maybe it will spit something out >> into >> >> one >> >> >> of the other files in /var/log/cloudstack/agent >> >> >> On Sep 21, 2013 5:19 PM, "Mike Tutkowski" < >> mike.tutkow...@solidfire.com >> >> > >> >> >> wrote: >> >> >> >> >> >> > This is how I've been trying to query for the status of the >> service (I >> >> >> > assume it could be started this way, as well, by changing >> "status" to >> >> >> > "start" or "restart"?): >> >> >> > >> >> >> > mtutkowski@ubuntu:/etc/cloudstack/agent$ sudo /usr/sbin/service >> >> >> > cloudstack-agent status >> >> >> > >> >> >> > I get this back: >> >> >> > >> >> >> > Failed to execute: * could not access PID file for >> cloudstack-agent >> >> >> > >> >> >> > I've made a bunch of code changes recently, though, so I think I'm >> >> going >> >> >> to >> >> >> > rebuild and redeploy everything. >> >> >> > >> >> >> > The debug info sounds helpful. Where can I set enable.debug? >> >> >> > >> >> >> > Thanks, Marcus! >> >> >> > >> >> >> > >> >> >> > On Sat, Sep 21, 2013 at 4:11 PM, Marcus Sorensen < >> shadow...@gmail.com >> >> >> > >wrote: >> >> >> > >> >> >> > > OK, will check it out in the next few days. As mentioned, you >> can >> >> set >> >> >> up >> >> >> > > your Ubuntu vm as the management server as well if all else >> fails. >> >> If >> >> >> > you >> >> >> > > can get to the mgmt server on 8250 from the KVM host, then you >> need >> >> to >> >> >> > > enable.debug on the agent. It won't run without complaining >> loudly >> >> if >> >> >> it >> >> >> > > can't get to the mgmt server, and I didn't see that in your >> agent >> >> log, >> >> >> so >> >> >> > > perhaps its not running. I assume you know how to stop/start the >> >> agent >> >> >> on >> >> >> > > KVM via 'service cloud stacks agent'. >> >> >> > > On Sep 21, 2013 3:02 PM, "Mike Tutkowski" < >> >> >> mike.tutkow...@solidfire.com> >> >> >> > > wrote: >> >> >> > > >> >> >> > > > Hey Marcus, >> >> >> > > > >> >> >> > > > I haven't yet been able to test my new code, but I thought you >> >> would >> >> >> > be a >> >> >> > > > good person to ask to review it: >> >> >> > > > >> >> >> > > > >> >> >> > > > >> >> >> > > >> >> >> > >> >> >> >> >> >> https://github.com/mike-tutkowski/incubator-cloudstack/commit/ea74b312a8a36801994500407fd54f0cdda55e37 >> >> >> > > > >> >> >> > > > All it is supposed to do is attach and detach a data disk >> (that >> >> has >> >> >> > > > guaranteed IOPS) with KVM as the hypervisor. The data disk >> >> happens to >> >> >> > be >> >> >> > > > from SolidFire-backed storage - where we have a 1:1 mapping >> >> between a >> >> >> > > > CloudStack volume and a data disk. >> >> >> > > > >> >> >> > > > There is no support for hypervisor snapshots or stuff like >> that >> >> >> > (likely a >> >> >> > > > future release)...just attaching and detaching a data disk in >> 4.3. >> >> >> > > > >> >> >> > > > Thanks! >> >> >> > > > >> >> >> > > > >> >> >> > > > On Fri, Sep 20, 2013 at 11:05 PM, Mike Tutkowski < >> >> >> > > > mike.tutkow...@solidfire.com> wrote: >> >> >> > > > >> >> >> > > > > When I re-deployed the DEBs, I didn't remove >> cloudstack-agent >> >> >> first. >> >> >> > > > Would >> >> >> > > > > that be a problem? I just did a sudo apt-get install >> >> >> > cloudstack-agent. >> >> >> > > > > >> >> >> > > > > >> >> >> > > > > On Fri, Sep 20, 2013 at 11:03 PM, Mike Tutkowski < >> >> >> > > > > mike.tutkow...@solidfire.com> wrote: >> >> >> > > > > >> >> >> > > > >> I get the same error running the command manually: >> >> >> > > > >> >> >> >> > > > >> mtutkowski@ubuntu:/etc/cloudstack/agent$ sudo >> >> /usr/sbin/service >> >> >> > > > >> cloudstack-agent status >> >> >> > > > >> * could not access PID file for cloudstack-agent >> >> >> > > > >> >> >> >> > > > >> >> >> >> > > > >> On Fri, Sep 20, 2013 at 11:00 PM, Mike Tutkowski < >> >> >> > > > >> mike.tutkow...@solidfire.com> wrote: >> >> >> > > > >> >> >> >> > > > >>> agent.log looks OK to me: >> >> >> > > > >>> >> >> >> > > > >>> 2013-09-20 19:35:39,010 INFO [cloud.agent.AgentShell] >> >> >> (main:null) >> >> >> > > > Agent >> >> >> > > > >>> started >> >> >> > > > >>> 2013-09-20 19:35:39,011 INFO [cloud.agent.AgentShell] >> >> >> (main:null) >> >> >> > > > >>> Implementation Version is 4.3.0-SNAPSHOT >> >> >> > > > >>> 2013-09-20 19:35:39,015 INFO [cloud.agent.AgentShell] >> >> >> (main:null) >> >> >> > > > >>> agent.properties found at >> >> /etc/cloudstack/agent/agent.properties >> >> >> > > > >>> 2013-09-20 19:35:39,023 INFO [cloud.agent.AgentShell] >> >> >> (main:null) >> >> >> > > > >>> Defaulting to using properties file for storage >> >> >> > > > >>> 2013-09-20 19:35:39,024 INFO [cloud.agent.AgentShell] >> >> >> (main:null) >> >> >> > > > >>> Defaulting to the constant time backoff algorithm >> >> >> > > > >>> 2013-09-20 19:35:39,029 INFO [cloud.utils.LogUtils] >> >> (main:null) >> >> >> > > log4j >> >> >> > > > >>> configuration found at >> /etc/cloudstack/agent/log4j-cloud.xml >> >> >> > > > >>> 2013-09-20 19:35:39,163 INFO [cloud.agent.Agent] >> (main:null) >> >> id >> >> >> > is 3 >> >> >> > > > >>> 2013-09-20 19:35:39,197 INFO >> >> >> > > > >>> [resource.virtualnetwork.VirtualRoutingResource] >> (main:null) >> >> >> > > > >>> VirtualRoutingResource _scriptDir to use: >> >> >> scripts/network/domr/kvm >> >> >> > > > >>> >> >> >> > > > >>> However, I wasn't aware that setup.log was important. This >> >> seems >> >> >> to >> >> >> > > be >> >> >> > > > a >> >> >> > > > >>> problem, but I'm not sure what it might indicate: >> >> >> > > > >>> >> >> >> > > > >>> DEBUG:root:execute:sudo /usr/sbin/service cloudstack-agent >> >> status >> >> >> > > > >>> DEBUG:root:Failed to execute: * could not access PID file >> for >> >> >> > > > >>> cloudstack-agent >> >> >> > > > >>> DEBUG:root:execute:sudo /usr/sbin/service cloudstack-agent >> >> start >> >> >> > > > >>> >> >> >> > > > >>> >> >> >> > > > >>> On Fri, Sep 20, 2013 at 10:53 PM, Marcus Sorensen < >> >> >> > > shadow...@gmail.com >> >> >> > > > >wrote: >> >> >> > > > >>> >> >> >> > > > >>>> Sorry, I saw that in the log, I thought it was the agent >> log >> >> for >> >> >> > > some >> >> >> > > > >>>> reason. Is the agent started? That might be the place to >> >> look. >> >> >> > There >> >> >> > > > is >> >> >> > > > >>>> an >> >> >> > > > >>>> agent log for the agent and one for the setup when it >> adds >> >> the >> >> >> > host, >> >> >> > > > >>>> both >> >> >> > > > >>>> in /var/log >> >> >> > > > >>>> On Sep 20, 2013 10:42 PM, "Mike Tutkowski" < >> >> >> > > > >>>> mike.tutkow...@solidfire.com> >> >> >> > > > >>>> wrote: >> >> >> > > > >>>> >> >> >> > > > >>>> > Is it saying that the MS is at the IP address or the >> KVM >> >> host? >> >> >> > > > >>>> > >> >> >> > > > >>>> > The KVM host is at 192.168.233.10. >> >> >> > > > >>>> > The MS host is at 192.168.233.1. >> >> >> > > > >>>> > >> >> >> > > > >>>> > I see this for my host Global Settings parameter: >> >> >> > > > >>>> > hostThe ip address of management server192.168.233.1 >> >> >> > > > >>>> > >> >> >> > > > >>>> > >> >> >> > > > >>>> > /etc/cloudstack/agent/agent.properties has a >> >> >> host=192.168.233.1 >> >> >> > > > value. >> >> >> > > > >>>> > >> >> >> > > > >>>> > >> >> >> > > > >>>> > On Fri, Sep 20, 2013 at 10:21 PM, Marcus Sorensen < >> >> >> > > > >>>> shadow...@gmail.com >> >> >> > > > >>>> > >wrote: >> >> >> > > > >>>> > >> >> >> > > > >>>> > > The log says your mgmt server is 192.168.233.10? But >> you >> >> >> tried >> >> >> > > to >> >> >> > > > >>>> telnet >> >> >> > > > >>>> > to >> >> >> > > > >>>> > > 192.168.233.1? It might be enough to change that in >> >> >> > > > >>>> > > /etc/cloudstack/agent/agent.properties, but you may >> want >> >> to >> >> >> > edit >> >> >> > > > the >> >> >> > > > >>>> > config >> >> >> > > > >>>> > > as well to tell it the real ms IP. >> >> >> > > > >>>> > > On Sep 20, 2013 10:12 PM, "Mike Tutkowski" < >> >> >> > > > >>>> mike.tutkow...@solidfire.com >> >> >> > > > >>>> > > >> >> >> > > > >>>> > > wrote: >> >> >> > > > >>>> > > >> >> >> > > > >>>> > > > Here's what my /etc/network/interfaces file looks >> >> like, if >> >> >> > > that >> >> >> > > > >>>> is of >> >> >> > > > >>>> > > > interest (the 192.168.233.0 network is the NAT >> network >> >> >> > VMware >> >> >> > > > >>>> Fusion >> >> >> > > > >>>> > set >> >> >> > > > >>>> > > > up): >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > auto lo >> >> >> > > > >>>> > > > iface lo inet loopback >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > auto eth0 >> >> >> > > > >>>> > > > iface eth0 inet manual >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > auto cloudbr0 >> >> >> > > > >>>> > > > iface cloudbr0 inet static >> >> >> > > > >>>> > > > address 192.168.233.10 >> >> >> > > > >>>> > > > netmask 255.255.255.0 >> >> >> > > > >>>> > > > network 192.168.233.0 >> >> >> > > > >>>> > > > broadcast 192.168.233.255 >> >> >> > > > >>>> > > > dns-nameservers 8.8.8.8 >> >> >> > > > >>>> > > > bridge_ports eth0 >> >> >> > > > >>>> > > > bridge_fd 5 >> >> >> > > > >>>> > > > bridge_stp off >> >> >> > > > >>>> > > > bridge_maxwait 1 >> >> >> > > > >>>> > > > post-up route add default gw 192.168.233.2 >> metric 1 >> >> >> > > > >>>> > > > pre-down route del default gw 192.168.233.2 >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > On Fri, Sep 20, 2013 at 10:08 PM, Mike Tutkowski < >> >> >> > > > >>>> > > > mike.tutkow...@solidfire.com> wrote: >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > > You appear to be correct. This is from the MS log >> >> >> (below). >> >> >> > > > >>>> Discovery >> >> >> > > > >>>> > > > timed >> >> >> > > > >>>> > > > > out. >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > I'm not sure why this would be. My network >> settings >> >> >> > > shouldn't >> >> >> > > > >>>> have >> >> >> > > > >>>> > > > changed >> >> >> > > > >>>> > > > > since the last time I tried this. >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > I am able to ping the KVM host from the MS host >> and >> >> vice >> >> >> > > > versa. >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > I'm even able to manually kick off a VM on the >> KVM >> >> host >> >> >> > and >> >> >> > > > >>>> ping from >> >> >> > > > >>>> > > it >> >> >> > > > >>>> > > > > to the MS host. >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > I am using NAT from my Mac OS X host (also >> running >> >> the >> >> >> CS >> >> >> > > MS) >> >> >> > > > >>>> to the >> >> >> > > > >>>> > VM >> >> >> > > > >>>> > > > > running KVM (VMware Fusion). >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > 2013-09-20 19:40:40,141 DEBUG >> >> >> > > > >>>> [c.c.h.k.d.LibvirtServerDiscoverer] >> >> >> > > > >>>> > > > > (613487991@qtp-1659933291-3:ctx-6b28dc48) >> Timeout, >> >> to >> >> >> > wait >> >> >> > > > for >> >> >> > > > >>>> the >> >> >> > > > >>>> > > host >> >> >> > > > >>>> > > > > connecting to mgt svr, assuming it is failed >> >> >> > > > >>>> > > > > 2013-09-20 19:40:40,144 WARN >> >> >> [c.c.r.ResourceManagerImpl] >> >> >> > > > >>>> > > > > (613487991@qtp-1659933291-3:ctx-6b28dc48) >> Unable to >> >> >> find >> >> >> > > the >> >> >> > > > >>>> server >> >> >> > > > >>>> > > > > resources at http://192.168.233.10 >> >> >> > > > >>>> > > > > 2013-09-20 19:40:40,145 INFO >> >> >> > [c.c.u.e.CSExceptionErrorCode] >> >> >> > > > >>>> > > > > (613487991@qtp-1659933291-3:ctx-6b28dc48) Could >> not >> >> >> find >> >> >> > > > >>>> exception: >> >> >> > > > >>>> > > > > com.cloud.exception.DiscoveryException in error >> code >> >> >> list >> >> >> > > for >> >> >> > > > >>>> > > exceptions >> >> >> > > > >>>> > > > > 2013-09-20 19:40:40,147 WARN >> >> [o.a.c.a.c.a.h.AddHostCmd] >> >> >> > > > >>>> > > > > (613487991@qtp-1659933291-3:ctx-6b28dc48) >> Exception: >> >> >> > > > >>>> > > > > com.cloud.exception.DiscoveryException: Unable >> to add >> >> >> the >> >> >> > > host >> >> >> > > > >>>> > > > > at >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > >> >> >> > > > >>>> > >> >> >> > > > >>>> >> >> >> > > > >> >> >> > > >> >> >> > >> >> >> >> >> >> com.cloud.resource.ResourceManagerImpl.discoverHostsFull(ResourceManagerImpl.java:778) >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > I do seem to be able to telnet in from my KVM >> host to >> >> >> the >> >> >> > MS >> >> >> > > > >>>> host's >> >> >> > > > >>>> > > 8250 >> >> >> > > > >>>> > > > > port: >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > > mtutkowski@ubuntu:~$ telnet 192.168.233.1 8250 >> >> >> > > > >>>> > > > > Trying 192.168.233.1... >> >> >> > > > >>>> > > > > Connected to 192.168.233.1. >> >> >> > > > >>>> > > > > Escape character is '^]'. >> >> >> > > > >>>> > > > > >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > > -- >> >> >> > > > >>>> > > > *Mike Tutkowski* >> >> >> > > > >>>> > > > *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > >>>> > > > e: mike.tutkow...@solidfire.com >> >> >> > > > >>>> > > > o: 303.746.7302 >> >> >> > > > >>>> > > > Advancing the way the world uses the >> >> >> > > > >>>> > > > cloud< >> >> http://solidfire.com/solution/overview/?video=play> >> >> >> > > > >>>> > > > *™* >> >> >> > > > >>>> > > > >> >> >> > > > >>>> > > >> >> >> > > > >>>> > >> >> >> > > > >>>> > >> >> >> > > > >>>> > >> >> >> > > > >>>> > -- >> >> >> > > > >>>> > *Mike Tutkowski* >> >> >> > > > >>>> > *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > >>>> > e: mike.tutkow...@solidfire.com >> >> >> > > > >>>> > o: 303.746.7302 >> >> >> > > > >>>> > Advancing the way the world uses the >> >> >> > > > >>>> > cloud< >> http://solidfire.com/solution/overview/?video=play> >> >> >> > > > >>>> > *™* >> >> >> > > > >>>> > >> >> >> > > > >>>> >> >> >> > > > >>> >> >> >> > > > >>> >> >> >> > > > >>> >> >> >> > > > >>> -- >> >> >> > > > >>> *Mike Tutkowski* >> >> >> > > > >>> *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > >>> e: mike.tutkow...@solidfire.com >> >> >> > > > >>> o: 303.746.7302 >> >> >> > > > >>> Advancing the way the world uses the cloud< >> >> >> > > > http://solidfire.com/solution/overview/?video=play> >> >> >> > > > >>> *™* >> >> >> > > > >>> >> >> >> > > > >> >> >> >> > > > >> >> >> >> > > > >> >> >> >> > > > >> -- >> >> >> > > > >> *Mike Tutkowski* >> >> >> > > > >> *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > >> e: mike.tutkow...@solidfire.com >> >> >> > > > >> o: 303.746.7302 >> >> >> > > > >> Advancing the way the world uses the cloud< >> >> >> > > > http://solidfire.com/solution/overview/?video=play> >> >> >> > > > >> *™* >> >> >> > > > >> >> >> >> > > > > >> >> >> > > > > >> >> >> > > > > >> >> >> > > > > -- >> >> >> > > > > *Mike Tutkowski* >> >> >> > > > > *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > > e: mike.tutkow...@solidfire.com >> >> >> > > > > o: 303.746.7302 >> >> >> > > > > Advancing the way the world uses the cloud< >> >> >> > > > http://solidfire.com/solution/overview/?video=play> >> >> >> > > > > *™* >> >> >> > > > > >> >> >> > > > >> >> >> > > > >> >> >> > > > >> >> >> > > > -- >> >> >> > > > *Mike Tutkowski* >> >> >> > > > *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > > > e: mike.tutkow...@solidfire.com >> >> >> > > > o: 303.746.7302 >> >> >> > > > Advancing the way the world uses the >> >> >> > > > cloud<http://solidfire.com/solution/overview/?video=play> >> >> >> > > > *™* >> >> >> > > > >> >> >> > > >> >> >> > >> >> >> > >> >> >> > >> >> >> > -- >> >> >> > *Mike Tutkowski* >> >> >> > *Senior CloudStack Developer, SolidFire Inc.* >> >> >> > e: mike.tutkow...@solidfire.com >> >> >> > o: 303.746.7302 >> >> >> > Advancing the way the world uses the >> >> >> > cloud<http://solidfire.com/solution/overview/?video=play> >> >> >> > *™* >> >> >> > >> >> >> >> >> > >> >> > >> >> > >> >> > -- >> >> > *Mike Tutkowski* >> >> > *Senior CloudStack Developer, SolidFire Inc.* >> >> > e: mike.tutkow...@solidfire.com >> >> > o: 303.746.7302 >> >> > Advancing the way the world uses the >> >> > cloud<http://solidfire.com/solution/overview/?video=play> >> >> > *™* >> >> >> > >> > >> > >> > -- >> > *Mike Tutkowski* >> > *Senior CloudStack Developer, SolidFire Inc.* >> > e: mike.tutkow...@solidfire.com >> > o: 303.746.7302 >> > Advancing the way the world uses the >> > cloud<http://solidfire.com/solution/overview/?video=play> >> > *™* >> > > > > -- > *Mike Tutkowski* > *Senior CloudStack Developer, SolidFire Inc.* > e: mike.tutkow...@solidfire.com > o: 303.746.7302 > Advancing the way the world uses the > cloud<http://solidfire.com/solution/overview/?video=play> > *™* > -- *Mike Tutkowski* *Senior CloudStack Developer, SolidFire Inc.* e: mike.tutkow...@solidfire.com o: 303.746.7302 Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play> *™*