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

Reply via email to