Same would work for KVM.

If CreateCommand and DestroyCommand were called at the appropriate times by
the storage framework, I could move my connect and disconnect logic out of
the attach/detach logic.


On Sun, Sep 22, 2013 at 12:08 AM, Mike Tutkowski <
mike.tutkow...@solidfire.com> wrote:

> 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>
> *™*
>



-- 
*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>
*™*

Reply via email to